2010-08-23 68 views
1

當我在具有OnClick事件的行內有按鈕時,如何獲取GridView行的DataKeyName值。在我的按鈕的OnClick事件中,我想獲取按鈕所在行的DataKeyName。GridView:獲取按鈕單擊行上的數據鍵

這可能嗎?

<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

當我有一個GridView工作,我通常不使用按鈕的事件OnClick。相反,我使用GridView上的OnRowCommand事件,並將數據綁定到按鈕的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; 
    // ... 
} 
+0

甜!另外,我可以在這裏使用按鈕的'oncommand'事件,而不需要在GridView上放置一個'OnRowCommand'。謝謝。 – 2010-08-23 03:41:31

1

您可以綁定的關鍵按鈕的CommandArgument屬性,並消耗(sender as Button).CommandArgument屬性代碼

+0

關閉,除了常規的'EventArgs'沒有'CommandArgument'屬性。有必要訂閱不同的事件來獲取該財產。 – kbrimington 2010-08-23 03:23:05

+0

@kbrimington謝謝。編輯 – Midhat 2010-08-23 03:31:07

相關問題