一页上有多个GridView

时间:2013-01-08 09:28:04

标签: c# asp.net .net webforms

我正在用C#创建一个应用程序。我创建了一个页面,其中有5个链接。每个链接都会打开一个不同的页面,其中有GridView

我可以在一个页面上制作所有这些网格 - 即当我点击link1时,只有与该链接相对应的网格才会显示在页面上,当我点击link2时, link2的网格出现了吗?只有激活链接的网格应该是可见的,并且所有其他网格都是隐藏的。

有人可以帮助我开始我应该怎样或在哪里开始?

2 个答案:

答案 0 :(得分:3)

由于您在标记中指定了webforms,因此多视图控件将为您提供奇迹。请为每个gridview取消具有不同视图的多视图控件。希望这会有所帮助。

用法

<强>标记

 <form id="form1" runat="server">


    <asp:LinkButton ID="LinkButton1"  Text="Link1" runat="server" OnClick="LinkButton1_Click">LinkButton</asp:LinkButton>
    <br>
    <asp:LinkButton ID="LinkButton2" runat="server" Text="Link2" OnClick="LinkButton2_Click">LinkButton</asp:LinkButton></br>

<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">

    <asp:View ID="View1" runat="server" >

        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>

    </asp:View>

      <asp:View ID="View2" runat="server">
      <asp:GridView ID="GridView2" runat="server">
    </asp:GridView>
</asp:View>
</asp:MultiView>

</form>

代码背后

    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        //retrieve data
        GridView1.DataBind();
        MultiView1.ActiveViewIndex=0;
     }


    protected void LinkButton2_Click(object sender, EventArgs e)
    {
         //retrieve data
        GridView1.DataBind();
        MultiView1.ActiveViewIndex=1;
    }

答案 1 :(得分:0)

我的解决方案并不像Abide Masaraure指出的那样优雅。我建议你按照他的回答。

但您也可以将每个gridview放在不同的div中,并在这些div中设置属性“runat = server”

对于每个链接,您可以使用asp.net linkbutton(因为此元素具有html链接的默认外观)。

你的aspx代码看起来很简单:

<asp:LinkButton runat="server" id="lnkButton_1" text="Link 1" OnClick="lnkButton_1_Click"/>
<asp:LinkButton runat="server" id="lnkButton_2" text="Link 2" OnClick="lnkButton_2_Click"/>
<asp:LinkButton runat="server" id="lnkButton_3" text="Link 3" OnClick="lnkButton_3_Click"/>
<asp:LinkButton runat="server" id="lnkButton_4" text="Link 4" OnClick="lnkButton_4_Click"/>
<asp:LinkButton runat="server" id="lnkButton_5" text="Link 5" OnClick="lnkButton_5_Click"/>

<div runat="server" id="divGrid_1" Visible="false">
   <asp:GridView runat="server" id="grid_1"></asp:GridView>
</div>

<div runat="server" id="divGrid_2" Visible="false">
   <asp:GridView runat="server" id="grid_2"></asp:GridView>
</div>

<div runat="server" id="divGrid_3" Visible="false">
   <asp:GridView runat="server id="grid_3"></asp:GridView>
</div>

<div runat="server" id="divGrid_4" Visible="false">
   <asp:GridView runat="server" id="grid_4"></asp:GridView>
</div>

<div runat="server" id="divGrid_5" Visible="false">
   <asp:GridView runat="server" id="grid_5"></asp:GridView>
</div>

你的aspx.cs(代码隐藏)代码会像这样:

protected void lnkButton_1_Click(object sender, EventArgs E)
{
   divGrid_1.Visible = true;
   divGrid_2.Visible = false;
   divGrid_3.Visible = false;
   divGrid_4.Visible = false;
   divGrid_5.Visible = false;

   LoadGridView_1();
}

对于每个链接按钮事件单击,您可以将对应div的可见性设置为true,将其他可见性设置为false,然后调用加载对应gridview的方法。

我希望我帮助过你。

最好的问候。