GridView显示超过1000行

本文关键字:1000行 显示 GridView | 更新日期: 2023-09-27 18:22:23

我使用GridView来显示数据库中的数据。首先,我将数据从DB查询到list<list<string>>,使用linq排序,将此数组复制到DataTable,并将DataTable绑定到GridView。但如果在DataTable中超过1000行,它会工作很长时间或不工作(浏览器中出现错误)。如何解决此问题?

UPDATE我在列中使用rowspan,并为所有行创建一个删除按钮,如果我使用分页,它能工作吗?

<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnDataBinding="GridView1_DataBinding" OnRowDeleted="GridView1_RowDeleted" OnRowDeleting="GridView1_RowDeleting" > 
     <Columns>
        <asp:BoundField DataField="Number" ItemStyle-Width="200px" > <ItemStyle Width="200px" > </ItemStyle>
        </asp:BoundField>
        <asp:BoundField DataField="Name" ItemStyle-Width="200px" > <ItemStyle Width="200px" > </ItemStyle>
        </asp:BoundField>
        <asp:BoundField DataField="Nameoid" ItemStyle-Width="200px" > <ItemStyle Width="200px" > </ItemStyle>
        </asp:BoundField>
        <asp:TemplateField>
                <ItemTemplate>
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                        <ContentTemplate>
                            <asp:Button ID="Button2" runat="server" Text="Button" OnClientClick="return DeleteConfirm();" OnClick="Button2_Click" />
                           <asp:HiddenField ID="HiddenField2" runat="server" Value='<%#Bind("Number") %>' />
                        </ContentTemplate>
                    </asp:UpdatePanel>
                </ItemTemplate>
            </asp:TemplateField>
     </Columns>
     </asp:GridView>     

GridView显示超过1000行

您似乎在一次往返时间内完成了大量服务器端代码。您应该将其缩小,以便页面可以在网格视图中显示结果。

以下是一些你应该做的事情:

  1. 不需要先在列表中存储,然后在数据表中存储,再进行排序。您可以直接使用DATAVIEW类对DB中的结果进行排序。

  2. 我认为您不应该在一个页面中显示网格视图中的所有1000条记录。您应该在网格视图中使用PAGING。这也是网格视图的内置功能。通过此功能,您可以根据需要在一个网格视图页面中显示记录数。。

关于如何做到这一点,有一个完整的例子可供参考。请关注以下链接http://www.dotnetgallery.com/kb/resource12-How-to-implement-paging-and-sorting-in-aspnet-Gridview-control.aspx

更新

如果要删除网格视图中的一行,每行上都有一个链接按钮。然后按照下面的文章

在此处输入链接描述

您可以将UpdatePanel放置在gridview之外。首先尝试使用上面的代码(来自链接),然后尝试添加更新面板。如果你觉得有什么困难,请在这里咨询。

我的建议是在GridView中使用Lazy加载模式。您可以参考:使用TimerControlAJAX 的LazyLoadUpdatePanel

或者您可以实现自定义分页

自定义

您可以在网格大小为10,20,30的网格视图中使用分页来容纳大量数据,这样页面就不会崩溃。

试着参考这个例子http://www.codeproject.com/Articles/106678/Display-Large-Amount-of-Data-in-GridView-with-Sear