【问题标题】:Multiple GridViews on one page一页上有多个 GridView
【发布时间】:2023-04-09 21:17:02
【问题描述】:

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

我可以在一个页面上制作所有这些网格吗?即,当我单击link1 时,页面上只会出现与该链接对应的网格,而当我单击link2 时,则只有@ 的网格987654324@出现?只有激活的链接的网格应该是可见的,而所有其他的网格都是隐藏的。

有人可以帮助我如何或从哪里开始吗?

【问题讨论】:

  • 您使用的是什么技术? WPF 还是 WinForms?
  • 如果这是使用 winforms,我认为您可以使用选项卡,每个选项卡有一个网格视图,并让链接打开正确的选项卡,一个视图,一次一个网格,也许?
  • 好的,如果你提到它通常会有所帮助;)
  • 您可以在技术上使用部分视图进行设置,然后使用一点逻辑(可能是链接中传递的参数)告诉它要显示哪个部分视图,这样您就可以轻松调整它如果您愿意,将来可以显示多个网格视图。
  • 在链接点击事件中,使对应的gridview可见并绑定。

标签: c# asp.net .net webforms


【解决方案1】:

由于您在标签中指定了网络表单,多视图控件会让您感到惊奇。为每个 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;
    }

【讨论】:

    【解决方案2】:

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

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

    对于每个链接,您可以使用 asp.net 链接按钮(因为该元素具有 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,将其他div的可见性设置为false,然后调用加载对应的gridview的方法。

    我希望我已经帮助了你。

    最好的问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 2016-06-17
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      相关资源
      最近更新 更多