gpt4 book ai didi

WPF 数据网格 : Lazy Loading/Inifinite scroll

转载 作者:太空狗 更新时间:2023-10-30 01:45:08 26 4
gpt4 key购买 nike

我用 250 行填充数据网格。当用户使用滚动条向下滚动时(例如低于 75%),我想从数据库中获取接下来的 250 行,等等。这个想法是网格可能有数百万个结果,我们不想加载它们,直到用户请求它们。是否有针对此的现有机制?

编辑:因为似乎有很多困惑:我不是在寻找标准的数据虚拟化解决方案,我已经在使用 them .但它们都要求您提前指定“虚拟行”的数量,而该查询对我来说代价高昂。他们需要它的原因是因为当您知道网格中的总项目时,它可以更容易地计算当前页面/偏移量/等。但计算该数量是一个非常昂贵的 sql 查询,所以我想迁移到另一个解决方案,在那里我可以跳过 COUNT() 查询。

最佳答案

所以看起来 DataGrid 的虚拟化属性对您没有帮助,因为它需要一个完整的数据集在 ItemsSource 中。

所以要有一个数据延迟加载(见文章Data Virtualization)你可以处理ScrollViewer.ScrollChanged事件并应用经典的服务器端分页方法。基本上你必须定义和计算像 Page Size, Page Number, Sort Order 这样你可以从数据库请求一个所需的数据集并将其显示在 UI 上。每次 Current Page NumberSort Order 发生变化时,您需要请求数据并更新网格的 ItemsSource,也许您还需要也恢复滚动位置,但我不确定。

  • 计算可见项的数量
  • 使用 PageNumber、PagiSize 等参数对数据库使用参数化查询进行数据请求
  • 通过刚刚加载的数据项更新 DataGrid ItemsSource

我认为主要的挑战是计算页面大小、当前页码的值。我相信Logical Scrolling mode 将在这方面帮助您。

关于WPF 数据网格 : Lazy Loading/Inifinite scroll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com