单击同一行上的按钮获取GridRow字段

时间:2014-04-10 19:37:39

标签: c# asp.net .net gridview

我有一个如下所示的GridRow:

item_id  name  age
1        bob   13     (button)
2        tom   4      (button)
5        jim   24     (button)

在我的网格视图中,按钮的添加方式如下:

<Columns>
    <asp:BoundField DataField="item_id" HeaderText="item_id" 
        InsertVisible="False" ReadOnly="True" SortExpression=item_id" />
    <asp:BoundField DataField="name" HeaderText="name" 
        SortExpression="name" />
    <asp:BoundField DataField="age" HeaderText="age" 
        SortExpression="age" />
    <asp:TemplateField>
      <ItemTemplate>
        <asp:Button ID="button" runat="server" OnClick="RegisterClick" DataField="button" HeaderText="button" SortExpression="button"
          CommandName="button" 
          CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
          Text="Register" />
      </ItemTemplate> 
    </asp:TemplateField>
</Columns>

如何通过单击行中的按钮来获取item_id值?
我想访问OnClick方法中的item_id值。任何想法如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

在CommandArgument of text框中,绑定item_id而不是行索引。这可能是最快的。

<asp:Button ID="button" runat="server" OnClick="RegisterClick" DataField="button" HeaderText="button" SortExpression="button"
          CommandName="button" 
          CommandArgument='<%# Eval("item_id") %>'
          Text="Register" />

在按钮点击事件中,

protected void RegisterClick(object sender, EventArgs e)
{
 var itemId = (sender as Button).CommandArgument;
}

答案 1 :(得分:0)

正如其他评论所提到的,绑定&#34; item_id&#34;而不是使用行索引。而不是:

CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"

尝试(使用单引号而不是双引号):

CommandArgument='<%# Eval("item_id") %>'

在后面的代码中使用以下内容来获取id:

int id = Convert.ToInt32(((Button)sender).CommandArgument);