我正在创建一个 Web 界面,当前从 XML 数据文件读取数据,将其解析为对象数组,然后将其绑定到 Gridview 的数据源。然后,我使用 和 从每列的对象中检索我想要的数据。

然而,我现在想在这个网格视图中有多个选项卡,可能由不同的链接按钮控制。每个选项卡将显示一组不同的列。

实现这一点的最佳方法是什么?我是否需要在页面中拥有三个单独的 GridView,并且仅显示用户选择的一个(基于对链接按钮的单击),同时隐藏所有其他 GridView?这看起来可能会不必要地缓慢。是否可以通过一个 GridView 来完成?

现在整个 GridView 包含在 AJAX 更新面板中,代码如下:

<asp:Panel id="searchResultsGrid" runat="server" CssClass="searchResultsGrid">
    <asp:GridView id="gridViewSearchResults" runat="server" AutoGenerateColumns="false" 
                    AllowPaging="True" AllowSorting="True" 
                    PageSize="25" Width="920" PagerSettings-Visible="false">
    <Columns>
        <asp:templatefield headertext="Test Column 1 Tab 1" HeaderStyle-HorizontalAlign="Left">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 2 Tab 1" HeaderStyle-HorizontalAlign="Left">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 3 Tab 1" HeaderStyle-HorizontalAlign="Left">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 4 Tab 1" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 5 Tab 1" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 6 Tab 1" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 7 Tab 1" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>                                                                                                    
    </Columns>
    <RowStyle CssClass="searchResultEntry borderTopGrey" />         
    <EmptyDataTemplate>
        <p class="searchResultsEmpty">
            <asp:Label ID="lblSearchResultsEmpty" runat="server" Text="No records matched the selected criteria.  Please revise your criteria and try again." CssClass="searchResultsEmpty"></asp:Label>
        </p>
    </EmptyDataTemplate>                
    </asp:GridView>
</asp:Panel>

这是我目前针对一个网格视图的代码,其中包含一个选项卡的内容。根据jdk的响应,我将如何为第二个和第三个选项卡添加其他TemplateFields,然后在单击选项卡链接按钮时在显示不同集之间切换?

谢谢!

有帮助吗?

解决方案

当存在多个 GridView 时,页面 ViewState 字符串可能会变得非常(不必要)大(查看其生成的 HTML 源代码并搜索“__VIEWSTATE”来查看它)。正如您所说,您可以使用一个 GridView 控件,并根据哪个 LinkBut​​ton(也称为 LinkBut​​ton)将适当的数据交换到其中。“选项卡”)最近被点击。

如果这也是分页数据场景,你可以在ViewState中存储一个简单的三个整数数组,代表三组数据中每组数据的当前页码,这样在换入换出时就可以显示最新一页的数据一个 DataGrid 控件的。

但是,如果带宽不是问题(即如果页面没有收到大量点击或在内联网上运行),那么不必太担心优化它。

其他提示

我之前做过类似的事情。我使用了GridView的模板列。并在GridView中添加 Ajax控件工具包选项卡控件

我可能会创建一个自定义复合控件(作为选项卡式容器)并添加网格视图。我不会把它捆绑成一个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top