【问题标题】:Dojo DataGrid how to notify view that data has changed on the server?Dojo DataGrid 如何通知视图服务器上的数据已更改?
【发布时间】:2012-03-16 23:59:09
【问题描述】:

如何通知 dojox.grid.DataGrid 存储/服务器上的数据已更改?

我将 dojox.data.QueryReadStore 与 DataGrid 一起使用。

例如,我希望 DataGrid 从服务器重新加载我知道已更改的一行。

感谢您的帮助

【问题讨论】:

    标签: javascript ajax datagrid dojo


    【解决方案1】:

    根据您是否缓存,答案会有所不同。 很可能你最终会做一些类似查询的事情: "?id=" + yourId + "&time=" + new Date().getTime() 缓存项目的原因几乎是在商店的生命周期内缓存的。 在服务器上强制重新加载的唯一方法是使用不同的查询(至少 JsonRestStore 是这种情况)。也许QueryReadStore更聪明,在使用某些功能时可以系统地从服务器重新加载。

    强制重新加载的旧日期技巧:)

    【讨论】:

      【解决方案2】:

      如果我理解你的问题,你想将服务器状态更改推送到客户端,对吗?因此,服务器上的一行已更改,您希望在无需任何用户干预的情况下自动在数据网格上反映该更改(数据网格应使用更新的数据重新加载)

      这将需要轮询或服务器端推送机制(例如 cometd 或 html5 websocket)

      另外,您需要使用 queryreadstore (QRS) 还是更简单的 itemfilewritestore (IFWS) 才行?我问的原因是 QRS 对于分页和延迟加载之类的事情很有用,但它增加了复杂性,特别是对于您的用例,因为更改的行可能不在用户的当前视图中(假设您想显示更改的行) .

      如果您可以使用 qn itemfilewritestore,那么,一旦您为此服务器端更改调用了 JS 函数(使用上述机制之一),只需使用此数据值更新您的商店 - dojo 数据网格将自动更新(每当存储数据发生变化时,dojo 都会负责更新呈现的数据网格)。有关如何操作商店的示例,请参阅 Add a row in Dojo datagrid

      如果必须使用 QRS,有 2 种用例,一种是插入的行在当前可见的数据集中(在这种情况下,您需要重新发出查询),另一种是新行在当前可见的数据集中时显示的数据集(在这种情况下,用户的分页操作将自动反映行中的更改)

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2015-08-16
        • 1970-01-01
        • 2022-10-01
        • 2011-01-19
        • 1970-01-01
        • 1970-01-01
        • 2013-08-19
        • 1970-01-01
        • 2014-11-16
        相关资源
        最近更新 更多