3

OnClick イベントを持つ行内にボタンがある場合、GridView 行の DataKeyName の値を取得するにはどうすればよいですか。ボタンの OnClick イベントで、ボタンが存在する行の DataKeyName を取得したいと考えています。

これは可能ですか?

<asp:GridView ID="myGridView" run="server">
     <Columns>
          <asp:TemplateField HeaderText="Column 1">
               <ItemTemplate>
                   ... bunch of html codes
                   <asp:Button ID="myButton" UseSubmitBehavior="false" runat="server" Text="Click Me" onclick="btnClick_Click" />
               </ItemTemplate>
           </asp:TemplateField>
     </Columns>
</asp:GridView>

私のコードビハインドで

protected void btnClick_Click(object sender, EventArgs e)
{
    // How can I get the DataKeyName value of the Row that the Button was clicked?
}
4

2 に答える 2

5

OnClickGridView を操作している場合、通常、ボタンのイベントは使用しません。代わりにOnRowCommand、GridView でイベントを使用しCommandArgument、ボタンのプロパティにデータをバインドします。GridViewCommandEventArgsコマンド引数は、イベント ハンドラのパラメータから取得できます。

パラメータを使用して任意の文字列をバインドし、さまざまな種類のボタンCommandNameを区別できます。「編集」、「更新」、「キャンセル」、「選択」、「削除」など、一部のコマンド名はすでに他のイベントで使用されていることに注意してください。

アップデート:

データキーが「ID」と呼ばれると仮定した例を次に示します。

<asp:GridView ID="myGridView" runat="server" OnRowCommand="myGridView_RowCommand">
     <Columns>
          <asp:TemplateField HeaderText="Column 1">
               <ItemTemplate>
                   ... bunch of html codes
                   <asp:Button ID="myButton" runat="server" Text="Click Me" CommandName="ClickMe" CommandArgument='<%# Eval("ID") %>' />
               </ItemTemplate>
           </asp:TemplateField>
     </Columns>
</asp:GridView>

コード ビハインドでは次のようになります。

protected void myGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
    var datakey = e.CommandArgument;
    // ...
}
于 2010-08-23T03:16:19.363 に答える
2

ボタンの CommandArgument プロパティにキーをバインド(sender as Button).CommandArgumentし、コードでプロパティを使用できます。

于 2010-08-23T03:14:11.567 に答える