大家好,我认为有一个有趣的问题。我有一个 Silverlight3 应用程序,它异步查询 SQL Server 2005 数据库。但是,查询返回的某些数据集非常庞大,因此我正在研究数据分页。
目标:
1)即时数据调用 - 我只想在用户点击转到第 3 页时查询第 3 页的数据。
2)我想要一个滑块来控制我所在的页面 - SliderControl 是 SL3,其运动绑定到存储过程调用(这是我对方法的最初猜测)。
3) 预读数据作为滑块的标签。因此滑块会显示“第 1 页,共 50 页”或“Gant - Hart”。某种指示您在数据中的位置,而无需实际查询所有数据,直到用户将滑块放置到位。
我几乎肯定我需要执行某种查询来获取查询最终返回的总行数和某种书签数据。否则我不知道如何拆分滑块,也无法做页面标签(甘特哈特的东西)。
有人有这方面的经验吗?谢谢。
这里通常至少涉及 2 个单独的查找,第一个用于获取寻呼机信息,第二个用于检索适合当前页面的数据。
寻呼机(滑块)需要知道如果您不进行寻呼,将返回的结果总数。 这是为了显示漂亮的“结果总数”指示器供您使用并计算您拥有的总页数所必需的。 在您的情况下,您需要在滑块中设置页面的良好视觉显示格式以供选择(由您所需的记录/页面值确定)。 这是你的第一个查询;它应该只返回一个标量 int 或 long,您可以计算滑块显示所需的内容。
第二个结果包括要为给定页面显示的实际记录。
对于数据页,第 1 步(共 2 步) 是运行查询,根据要返回的数据中存在的主键对结果进行筛选和排序,将键值放入带有 AUTO_INCRMENT/IDENTITY 字段的临时表中或者获取派生表结果的行号。 (摘要:2 个字段,1 个用于序列/1 个用于在步骤 2 中加入的主键)。
第 2 步(共 2 步) 是将键值与包含数据的表连接起来,按步骤 1 中确定的顺序排序,仅选择由页码确定的编号为(所需起始行)到(所需结束行)的行以及您选择的页面尺寸。
强烈建议存储过程在此操作期间将数据保留在服务器上,而您必须检查比您真正想要带回的数据更多的数据以优化带宽。