单击链接按钮获取选定的aspgridview行以获取隐藏的ID值

NMM*_*NMM 18 gridview linkbutton

我绑定链接按钮与aspgridview中的标题数据,还绑定隐藏标签,其中包含ID值.当用户点击此链接按钮时,我想访问ID值.这个我需要因为,如果用户登录然后只有我弹出详细信息窗口,否则警告消息登录以获取详细信息.

在lnkTitle_Click()事件中我试图访问所选行以查找标签控件.

GridViewRow grdSelRow = GridView1.SelectedRow;
Label lblID = (Label)grdSelRow.FindControl("lblID");
Run Code Online (Sandbox Code Playgroud)

但我得到grdSelRow为null.

单击gridview的linkbutton时如何获取所选行?

nav*_*een 24

问题是,当您单击GridView中的按钮时,该行将只是一个单击行而不是一个SelectedRow.如果你想让它成为SelectedRow,你必须CommandName="Select"在Button的标记中指定.

以下是满足您要求的两种方法.

为ItemTemplate中的LinkBut​​ton连接一个onclick事件

标记

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server" 
                    Text="Click1" 
                    OnClick="LinkButton1_Click"/>
    </ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

代码隐藏

protected void LinkButton1_Click(object sender, EventArgs e)
{
    GridViewRow clickedRow = ((LinkButton) sender).NamingContainer as GridViewRow;
    Label lblID = (Label)clickedRow.FindControl("lblID");
}
Run Code Online (Sandbox Code Playgroud)

使用RowCommand捕获LinkBut​​ton单击.

标记

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton2" runat="server" 
                    Text="Click2" 
                    CommandName="MyCustomCommand"/>
    </ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

代码隐藏

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");
    }
}
Run Code Online (Sandbox Code Playgroud)