如何将显示的sql数据加载到wpf可滚动列表视图中?大集合(20k +)没有遇到内存问题?

时间:2014-02-16 11:30:51

标签: c# sql wpf

我在sql数据库中有一个大集合。当我使用DataSet时,我假设我正在拉动所有(当我说全部,我的意思是20000+)数据库条目,以填充可滚动的WPF列表视图。当我拉出那么多数据,并添加更多数据时,我的内存不足。

我在这里问了一个类似的问题:program using up all memory from listview sql table, how to populate with only the relevant data?我需要在列表视图中使用它。

如何在用户滚动时只提取我需要的数据?会DataRead在这里工作吗?我已经看过关于DataRead的教程,但它们通常是基于按钮的,我需要根据用户在列表视图中滚动的方向动态读取数据。

是否有一种方法可以根据30个值进行更新,如果用户看到其中的15个,则服务器查询和返回值之间的延迟不会导致列表视图出现任何问题用户向上或向下滚动?

2 个答案:

答案 0 :(得分:1)

请检查下一个链接Data virtualization in codeProject

答案 1 :(得分:1)

  

我假设我正在拉动所有(当我说全部,我的意思是20000+)数据库条目一次填充可滚动的WPF列表视图

为什么呢?你能想象有人分析一次 20000多个元素吗?您希望您的用户一次查看 20000多个元素吗?您应该有充分的理由一次性提取整个数据集。 “为用户显示”很少是这样的原因。

这些问题通常以两种方式处理:

  1. Pagination。为了改善用户体验,您可以随时提取额外的页面,以便在页面之间进行无缝转换。
  2. Virtualization。大多数WPF控件都内置了此功能(can be easily enabled)。除非您将ListView ItemContainer(从VirtualizingStackPanel更改为其他内容)或手动禁用虚拟化,否则它应该可以正常工作。
  3. 在SQL端,您希望查询 limit offset ,以便在运行时决定应该获取哪部分数据集。