【问题标题】:how to select the row id on button click event inside gridview如何在gridview内的按钮单击事件上选择行ID
【发布时间】:2014-10-26 07:59:53
【问题描述】:
我在我的网格视图中添加了两个按钮..
在页面加载事件的网格视图中加载数据的位置..
现在我想分别在添加和删除按钮上编写更新和删除查询。
我的问题是如何在按钮点击事件中选择行 ID
<asp:GridView ID="GridView1" runat="server" CssClass="flat-table flat-table-1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btn_add" runat="server" CommandName="Add" OnClick="btn_add_Click" Text="Add" CssClass="btn btn-align btn-primary" />
<asp:Button ID="btn_cancel" runat="server" CommandName="Cancel" OnClick="btn_cancel_Click" Text="Delete" CssClass="btn btn-align btn-danger" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
【问题讨论】:
标签:
asp.net
ado.net
ado.net-entity-data-model
【解决方案1】:
将ItemTempalate 修改为以下。注意:我使用CommandArgument 传递选定的row_index。
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btn_add" runat="server" CommandName="Add" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Add" CssClass="btn btn-align btn-primary" />
<asp:Button ID="btn_cancel" runat="server" CommandName="Cancel" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" Text="Delete" CssClass="btn btn-align btn-danger" />
</ItemTemplate>
</asp:TemplateField>
并添加row_command 事件,并使用以下服务器端代码,我只处理了"Add" 操作。
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if(e.CommandName == "Add")
{
// Handling for add
string arg = e.CommandArgument.ToString();
int rowidx = int.Parse(arg);
// arg = selected index, as we are using that in cmd arg.
GridViewRow SelectedRow = GridView1.Rows[rowidx];
}
}