我正在使用 dgridOnDemandGrid
显示来自 DojoJsonRest
商店的数据。这很好用,但我希望网格自动显示更改的数据。实施基于推送的方法,服务器告诉所有客户端哪些数据已更改,因此我正在寻找基于客户端的解决方案。使用 dgridrefresh()
没有用,因为这会导致闪烁并重置整个网格。
到目前为止,我最好的猜测是定期从第二个存储实例中获取所有数据,将其与实时存储实例进行比较,并使用Observable
存储包装器通知网格任何更改的数据。
有没有更好、更优雅的解决方案?如果没有,我该如何做到最好?
编辑:这种方法的问题是知道网格中当前显示了哪些行。我的应用程序处理大量数据,因此在两个 dojo 商店中同步整个集合并不是一个好主意。有没有办法告诉网格中当前显示了哪些行?理想情况下,网格会定期为当前显示的行重新请求数据。不可能这么难吧?
编辑2:到目前为止,我最好的方法是“破解”Observable
商店,跟踪所有对observe
. 然后我会定期重新执行观察到的查询并将更改合并到实时存储中。问题是 dgrid 让太多的观察者保持开放状态,使其无法顺利工作。它关闭了其中一些,所以我的代码没有错误,我设置farOffRemoval
为 500(也尝试过越来越低)。
到目前为止,这是我的代码:https ://gist.github.com/3225927
它还没有完成,但它显示了足够的调试信息来显示问题所在。由于可能没有人愿意设置它并且 jsfiddle 上没有 dgrid,我可以告诉你,在 1000 个条目网格中滚动后,大约有 10-15 个观察者和observerStats.abs(至少观察到的所有行的计数一次)约为750。