ボタンフィールドのあるグリッドビューがあります。データベース内のテーブルを更新し、ボタンのクリック時にボタンの画像を変更したいと考えています。行インデックスにもアクセスできる最適なイベントは何ですか? RowCommand イベントを使用してみましたが、そのイベントから行インデックスにアクセスできません
3 に答える
このコードで試すことができます-に基づいてCommandArgument
void GridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
if(e.CommandName=="Test")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = CustomersGridView.Rows[index];
}
}
リンク: http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.gridview.rowcommand(v=vs.80).aspx
asp:ButtonField
使用する代わりに、asp:TemplateField
そのasp:Button
中。MyCommandCommandName
と言います。RowCommand
イベント内で、これを行います
var clickedRow = (GridViewRow)((Button)sender).NamingContainer;
var clickedIndex = clickedRow.RowIndex;
ここでドキュメントを確認しましたhttp://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx
「注」セクション(便宜上、以下)を見ると、CommandArguementプロパティからRowIndexを取得できるはずです。
注イベントを発生させた行のインデックスを判別するには、イベントに渡されるイベント引数のCommandArgumentプロパティを使用します。ButtonFieldクラスは、CommandArgumentプロパティに適切なインデックス値を自動的に入力します。その他のコマンドボタンについては、コマンドボタンのCommandArgumentプロパティを手動で設定する必要があります。たとえば、GridViewコントロールでページングが有効になっていない場合は、CommandArgumentを<%#Container.DataItemIndex%>に設定できます。