我绑定了aspgridview中标题数据的链接按钮,也绑定了隐藏标签,其中包含ID值。当用户单击此链接按钮时,我想访问ID值。这是我需要的,因为如果用户登录,那么只有我弹出详细窗口,否则警报信息登录的细节。
在lnkTitle_Click()事件中,我试图访问选定的行以查找label控件。
GridViewRow grdSelRow = GridView1.SelectedRow;
Label lblID = (Label)grdSelRow.FindControl("lblID");
但我将grdSelRow设置为null。
如何在点击gridview的链接按钮时获得选中的行?
发布于 2011-06-10 11:34:23
问题是,当您单击GridView中的按钮时,该行将只是一个被单击的行,而不是一个SelectedRow
。如果你想让它成为SelectedRow,你必须在按钮的标记中指定CommandName="Select"
。
这里有两种方法可以满足您的需求。
为ItemTemplate内部的LinkButton连接onclick事件
标记
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Click1"
OnClick="LinkButton1_Click"/>
</ItemTemplate>
</asp:TemplateField>
代码隐藏
protected void LinkButton1_Click(object sender, EventArgs e)
{
GridViewRow clickedRow = ((LinkButton) sender).NamingContainer as GridViewRow;
Label lblID = (Label)clickedRow.FindControl("lblID");
}
使用RowCommand捕捉LinkButton点击。
标记
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton2" runat="server"
Text="Click2"
CommandName="MyCustomCommand"/>
</ItemTemplate>
</asp:TemplateField>
代码隐藏
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if(e.CommandName.Equals("MyCustomCommand"))
{
GridViewRow clickedRow = ((LinkButton)e.CommandSource).NamingContainer as GridViewRow;
Label lblID = (Label)clickedRow.FindControl("lblID");
}
}
https://stackoverflow.com/questions/6295767
复制相似问题