如何通过同一页面上的超链接打开一个新的 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>
改用 LinkButton:
<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>
希望对您有所帮助。
如果您有任何问题,请尽管提问。
我是一名优秀的程序员,十分优秀!