单击“链接”按钮获取隐藏的ID值时,如何获取选定的aspgridview行?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (32)

我是绑定链接按钮与标题数据在aspgridview和绑定隐藏标签,其中包含ID值。当用户点击这个链接按钮,我想访问ID值。这是我需要的,因为,如果用户登录,那么只有我弹出细节窗口其他警报消息登录详细信息。

在InkTitle_单击()事件,尝试访问选定的行以查找Label控件。

GridViewRow grdSelRow = GridView1.SelectedRow;
Label lblID = (Label)grdSelRow.FindControl("lblID");

但我得到的是“零”。

单击网格视图的链接按钮时如何获得选定的行?

提问于
用户回答回答于

问题是,当你点击一个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>

代码

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

使用RowCommand来捕获LinkBut​​ton点击。

标记

<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");
    }
}

扫码关注云+社区