GridViewRow clickedRow = ((LinkButton)sender).NamingContainer as GridViewRow;
Label lblUser = clickedRow.FindControl("lblFullName") as Label;
Label lblUserId = (Label)clickedRow.FindControl("lblUserId");
编译器抛出错误
无法转换'System.Web.UI.WebControls.GridView'
类型的对象
答案 0 :(得分:3)
您当前代码的问题在于GridView的RowCommand
事件是由gridview本身引发的,而不是由单个控件引发的,因此您的演员表会失败: -
(LinkButton)sender
因为此处的发件人是Gridview
而不是链接按钮。
现在,您的gridview中可能有多个控件可以引发此事件(或者您可能会在将来添加它们),因此请在LinkButton中添加CommandName
属性,如下所示: -
<asp:LinkButton ID="myLinkButton" runat="server" Text="Status"
CommandName="myLinkButton"></asp:LinkButton>
最后在RowCommand
事件中,您可以先检查LinkButton
是否引发了该事件,然后安全地使用e.CommandSource
属性LinkButton
来自找到Gridview的包含行。
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "myLinkButton")
{
LinkButton lnk = (e.CommandSource) as LinkButton;
GridViewRow clickedRow = lnk.NamingContainer as GridViewRow;
}
}