c# - gridview排序/分页建议

时间:2012-10-01 22:14:56

标签: c# asp.net vb.net gridview datasource

我正在使用gridview来显示大量数据。

数据源存储在会话中,因此我可以对gridview进行分页/排序,而无需额外访问SQL服务器。

有没有更好的方法来分页/排序网格而不必将数据存储在会话中?

4 个答案:

答案 0 :(得分:2)

我认为这完全取决于您使用的数据量。如果您正在使用几百行,我建议您查看jQuery插件DataTables。从代码的角度来看,您创建一个常规表,然后在document.Ready事件中应用DataTables脚本。它具有分页,排序和过滤功能。它非常强大。

如果您正在使用一千行或更多行,我建议您进行分页和排序服务器端。在这种情况下,当用户页面时,您再次转到数据库,并且只返回他们在任何给定时间查看的行数。因此,如果您只在页面上显示50条记录,则查询应仅返回50条记录。这种方式有点棘手,但对用户来说应该更快,并且不会冒着达到最大页面大小的风险。

答案 1 :(得分:0)

您可以基于寻呼机按钮以编程方式使行可见和不可见。将数据集分组为页面大小的块。当你隐藏一个块并使你想要的块可见时,另一个块应该弹出它的位置。您可以在所有客户端执行此操作。

答案 2 :(得分:0)

根据我的经验,我建议使用ObjectDataSource,因为您可以通过反射大块数据动态工作,而不会使会话混乱。 您可以使用以下附加功能:选择,插入和删除。

答案 3 :(得分:0)

假设您希望将整个表存储在会话中以避免命中SQL服务器,一种方法是对数据进行自己的分页/排序,将结果单页的项目放在List<>中。 ,然后使用该List填充DataGrid。

您必须实现自己的页面返回/页面转发控制,但这并不困难。每次单击前进/后退按钮时,这些控件都会为List填充一个新页面的可查看数据,这些数据来自整个内存表。

优点是您可以完全控制所显示的数据页面,而DataGrid控件不会尝试显示超出您想要的数据。

但请确保您在会话中缓存的数据不会过时;因为您上次从SQL服务器检索了表,因此您没有显示已修改或删除的旧数据项,或者未显示新插入的项。某种超时可能是合适的,因此您每隔几分钟左右刷新数据库中的数据(而不是每次重新显示屏幕时)。