【问题标题】:Getting selected row of aspgridview when click on link button to get hidden ID value单击链接按钮以获取隐藏的ID值时获取选定的asp gridview行
【发布时间】:2011-09-11 20:27:00
【问题描述】:

我正在将链接按钮与 aspgridview 中的标题数据绑定,并绑定包含 ID 值的隐藏标签。当用户单击此链接按钮时,我想访问 ID 值。这是我需要的,因为如果用户登录,那么只有我会弹出详细信息窗口,否则会发出警报消息以获取详细信息。

在 lnkTitle_Click() 事件中,我试图访问选定的行以查找标签控件。

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

但我将 grdSelRow 设为空。

点击gridview的linkbutton如何获取选中的行?

【问题讨论】:

    标签: gridview linkbutton


    【解决方案1】:

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

    这里有两种方法可以满足您的要求。

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

    【讨论】:

    • +1 @Naveen 用于指定“如果你想让它成为 SelectedRow,你必须在按钮的标记中指定 CommandName="Select"”
    • @Naveen 在显示 javascript 确认之前如何在 gridview 的情况下标记选择?如果我在确认中单击取消,则在显示确认弹出窗口之前,我没有看到选择的当前行,也没有看到选择的行。
    • @dasariramacharanprasad:您能否详细说明一下并作为问题提出来。我没有完全理解。
    • @naveen 我们如何使用 javascript 标记网格行选择?我们可以调用任何 Asp.net javascript 方法/或任何方式来选择一行,但不想在该行中单击该按钮执行任何操作(因为用户在 javascript 确认弹出窗口中取消)?
    猜你喜欢
    • 2012-05-14
    • 2015-12-16
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多