Dojo DataGrid如何通知视图服务器上的数据已更改?

时间:2012-02-27 14:01:03

标签: javascript ajax datagrid dojo

如何通知dojox.grid.DataGrid数据在商店/服务器上发生了变化?

我正在使用带有DataGrid的dojox.data.QueryReadStore。

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

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

根据您是否缓存的IF,答案会有所不同。 最有可能你最终会做一些像查询获取的东西:“?id =”+ yourId +“& time =”+ new Date()。getTime() 作为缓存项的原因几乎缓存了商店的生命周期。 强制重新加载服务器的唯一方法是使用不同的查询(至少JsonRestStore就是这种情况)。也许QueryReadStore更聪明,并且在使用某些功能时可以从服务器系统地重新加载。

强制重装的好日期技巧:)

答案 1 :(得分:2)

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

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

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

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

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

希望这会有所帮助