【发布时间】:2010-09-24 18:14:13
【问题描述】:
我知道如何创建和填充数据表,我已经完成了。现在,我只想在 web 表单上显示数据表,但我也想知道如何对其进行分页和排序。最终我不想将它绑定到数据网格或网格视图。我想自己学习如何以编程方式执行此操作。
你能告诉我如何在不使用 datagrid 或 gridview 的情况下显示、分页和排序这个数据表吗?
谢谢!
【问题讨论】:
我知道如何创建和填充数据表,我已经完成了。现在,我只想在 web 表单上显示数据表,但我也想知道如何对其进行分页和排序。最终我不想将它绑定到数据网格或网格视图。我想自己学习如何以编程方式执行此操作。
你能告诉我如何在不使用 datagrid 或 gridview 的情况下显示、分页和排序这个数据表吗?
谢谢!
【问题讨论】:
理想的分页是在数据库级别完成的。为此,您创建一个可能带有两个参数的 SP。一个是没有。您想在每页上显示的记录数,而另一个参数则不会。您的用户所在的页面。
例如 - 如果您的用户位于第 1 页并且每页记录为 20,则从您的数据库中检索行 ID 为 1 到 20 的记录。如果用户想要查看第 3 页,则检索第 41 到 60 行。如果您的 SQL 表中没有唯一标识符,那么您将不得不在 ROW_NUMBER() 函数的帮助下使用内部查询。以下是使用 SQL Server ROW_NUMBER() 函数进行分页的链接。
http://www.davidhayden.com/blog/dave/archive/2005/12/30/2652.aspx
除了这个逻辑,您还可以组合排序。这可能是您的 SP 的第三个参数。您可以先以任何方式对数据进行排序,然后取出适当的页面。
【讨论】:
首先您必须将数据存储到会话对象/视图状态/缓存中
然后根据您的要求生成 table/ div 并使用循环为 no。您要在屏幕上显示的记录数 * 当前页面编号 +1。(当前页面编号,您必须存储在视图或隐藏字段中)
对于排序使用标题上的链接(使用带有链接的表头),然后使用 Linq 进行排序。 (对数据进行排序后,您必须替换会话对象/视图状态/缓存对象) 您可以使用列名生成标题
【讨论】: