当您使用MVVM绑定到Kendo UI Grid时,数据绑定将触发一次并且一切正常。如果您需要在事后更新该数据,则每次更改任何viewmodel(或子视图模型)上的一个数据时,整个网格都会重新数据绑定。因此,如果网格中有一些绑定到模板的单元格,并且您必须从某个外部ajax源更改viewmodel上的2或3个属性,则Databound将为每个更改的模型触发2或3次,从而导致整个可见区域重新绑定。我们如何一次更新大量数据并且只发出一次数据绑定?
答案 0 :(得分:9)
你究竟如何重新绑定网格?基本上如果你改变一些这样的模型:
dataItem.set('SomeField','new value');
dataItem.set('someOtherField','other value');
这样,由于MVVM,Grid确实会绑定两次。每次调用set时都会触发更改事件。
但是,如果您更新这样的值:
dataItem.SomeField='new value';
dataItem.someOtherField= 'other value';
Grid不会对更改做出反应,也不会重新重新读取模型中的值,您可以通过刷新方法强制Grid执行此操作。
$('#gridName').data().kendoGrid.refresh()
答案 1 :(得分:1)
我不确定是否有某种方法可以暂时告诉网格停止收听事件,然后最后重新同步一次。如果有,请在这里给出答案!否则,我做的是我没有通过每个项目的.set()。相反,我通过直接将数据设置为属性来更新所有行的数据。然后当我到达我正在更新的最后一行时,我在最后一个需要更新的属性上调用了.set()。这将导致数据绑定仅触发一次,整个网格将使用已更改的所有数据刷新自身。如果不这样做,那么页面上显示的行越多,处理所需的时间就越长。 (在用户再次执行任何操作之前可能需要20多秒。)
答案 2 :(得分:1)
看起来像dataBinding事件可以阻止网格上的重新绑定。