asp.netで、各行にボタンを含むGridView

GridViewの中にWebControls.Buttonを配置すると、そのボタンのClientIDは
「GridViewの行数+ボタンのID」というIDになる。
そして、asp.netにおいてはClientIDを元に「ボタンが押されたイベント」を発生させているため、ポストバック後にボタンのIDが変わっていても、ボタンの表示される行が変わっていても、「ボタンが押されたイベント」は発生しない。


asp.netで、各行にボタンを含むGridViewを利用している画面で、javascriptで行を上下入れ替えして並び替えるという機能の実装した。
いろいろ試したが、「javascriptで行を上下入れ替え」は、コントロールそのものは元の行のものを利用し、内容のみを入れ替えるという方法で上手く動かすことができた。


asp.netで、各行に「ID未指定のボタン」を含むGridViewを利用している画面で、
「画面の出力→ボタンが押されてポストバックされる」の間に他ユーザに
GridViewの表示元となるデータを変更されてしまった場合、意図したのとは別のアイテムのボタンが押されたイベントが発生してしまう。
その場合、ボタンに一意なIDを指定してやると前述の理由で、GridViewの表示元となるデータが変更されている場合はイベントが発生しなくなる。
(ボタンを押すと意図したのとは別のアイテムに対して処理が行われるよりは、ボタンを押しても何も起こらずにgridviewが再描画される方がマシ)