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>
您似乎在一次往返时间内完成了大量服务器端代码。您应该将其缩小,以便页面可以在网格视图中显示结果。
以下是一些你应该做的事情:
-
不需要先在列表中存储,然后在数据表中存储,再进行排序。您可以直接使用DATAVIEW类对DB中的结果进行排序。
-
我认为您不应该在一个页面中显示网格视图中的所有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