通过Hyperlink打开新的gridview

时间:2014-06-12 13:55:47

标签: c# asp.net gridview hyperlink

如何通过同一页面上的超链接打开新的gridview,我不想关闭现有的gridview,但是当用户点击此表格上的任何超链接时,想要显示与此相邻的另一个gridview。我有一些类似下面的数据,当我点击任何这些超链接时,我想在同一页面上打开一个新的gridview。新的gridview将包含来自不同表的数据。

我无法插入图片,因为我没有足够的声誉,但可以分享我的HTML代码:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="UN_AT_Group">
    <Columns>
           <asp:HyperLinkField DataTextField="Group_Description" DataNavigateUrlFields="UN_AT_Group" DataNavigateUrlFormatString="~/Details.aspx?Id={0}"
    </Columns>
</asp:GridView>

1 个答案:

答案 0 :(得分:1)

改为使用LinkBut​​ton:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="UN_AT_Group" OnRowCommand="GridView1_RowCommand" Visible="True">
    <Columns>    
        <asp:TemplateField>
            <ItemTemplate>
                 <asp:LinkButton ID="GotoNextGrid" runat="server" CommandArgument="NextGrid" CommandName="NextGrid" Text="Show Rights">
                 </asp:LinkButton>  
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>  
</asp:GridView>

第二次GridView为您做同样的事情,但设置Visibile="false"

然后在CodeBehind中捕获它:(注意,确保我在此处拥有的标签也可以是其他内容......无论您的DataTextField是什么。

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "NextGrid")
    {
        LinkButton lb = (LinkButton)e.CommandSource;
        GridViewRow gvr = (GridViewRow)lb.NamingContainer;
        Label lbl = gvr.FindControl("GroupDescription") as Label;
        string description = lbl.Text;
        GridView1.Visible = false;
        GridView2.Visible = true;
        FillDataForGridView2(description) //Fill the Data for GridView2 here and pass description as parameter
    }
}

如果您使用UpdatePanel,请务必小心,然后您需要添加Trigger

<Triggers>
    <asp:AsyncPostBackTrigger ControlID="GridView1" EventName="RowCommand" />
</Triggers>

我希望这会有所帮助。

如果您有任何问题,请询问。