我在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个,则服务器查询和返回值之间的延迟不会导致列表视图出现任何问题用户向上或向下滚动?
答案 0 :(得分:1)
答案 1 :(得分:1)
我假设我正在拉动所有(当我说全部,我的意思是20000+)数据库条目一次填充可滚动的WPF列表视图
为什么呢?你能想象有人分析一次 20000多个元素吗?您希望您的用户一次查看 20000多个元素吗?您应该有充分的理由一次性提取整个数据集。 “为用户显示”很少是这样的原因。
这些问题通常以两种方式处理:
ListView
ItemContainer
(从VirtualizingStackPanel
更改为其他内容)或手动禁用虚拟化,否则它应该可以正常工作。在SQL端,您希望查询 limit 和 offset ,以便在运行时决定应该获取哪部分数据集。