数据分页:SQL Server 2005 + SL3

时间:2010-07-02 19:24:08

标签: c# sql silverlight sql-server-2005 paging

嘿大家,我想到了一个有趣的问题。我有一个Silverlight3应用程序,它异步查询SQL Server 2005数据库。但是,查询返回的一些数据集很大,因此我正在研究数据分页。

目标:

1)及时数据通话 - 我只想在用户点击进入第3页时查询第3页的数据。

2)我想要一个滑块来控制我所在的页面 - SliderControl是SL3,其移动绑定到存储过程调用(这是我对方法的初步猜测)。

3)预读数据作为滑块的标签。所以滑块会说“Page 1 of 50”或者说“Gant - Hart”。在用户将滑块移动到适当位置之前,在不实际查询所有数据的情况下指示您在数据中的位置。

我几乎肯定我需要做一些查询来获取查询最终会返回的行总数和某种书签数据。否则,我不知道如何拆分滑块,也不知道我是否能够进行页面标签(不能用来制作东西)。

任何人都有这方面的经验吗?感谢。

1 个答案:

答案 0 :(得分:0)

这里通常至少涉及2个单独的查找,第一个用于获取寻呼机信息,第二个用于检索适合当前页面的数据。

寻呼机(滑块)需要知道如果您没有进行分页将返回的总数结果。这需要显示漂亮的“结果总数”指标供您使用,并计算您已经获得的总页数。在您的情况下,您将要在滑块中格式化页面的可视化显示以供选择(由您所需的记录/页面值确定)。这是你的第一个问题;它应该只返回一个标量int或long,你可以计算滑块显示所需的内容。

第二个结果包括要为给定页面显示的实际记录

对于数据页面,

第1步(共2步)是运行查询来过滤并按照您要返回的数据中存在的主键对结果进行排序,将键值放入临时值具有AUTO_INCREMENT / IDENTITY字段的表或获取派生表结果的行号。 (摘要:2个字段,1表示序列/ 1表示主键在步骤2中加入)。

第2步(共2步)是将键值与包含数据的表连接,按步骤1中确定的顺序排序,仅选择编号(所需起始行)到(所需结束行)的行)由您选择的页码和页面大小决定。

强烈建议存储过程在此操作期间将数据保留在服务器上,同时您必须检查的数据多于您真正关心的优化带宽。