我有一个如下所示的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值。任何想法如何实现这一目标?
答案 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);