我有一个通过 MVVM 绑定到数据源的网格。
我在网格中选择一行,因此我使用这个:
var grid = e.sender;
var rowSelected = grid.dataItem(grid.select());
this.set("currentAccount", rowSelected);
其中“currentAccount”保存当前选定的行。此外,“currentAccount”绑定到要由用户编辑的表单。
现在,当我对表单字段进行更改时,它们不会自动反映在 Grid 上。我需要调用 grid.refresh() 才能在网格上显示更改。通过进一步调试,我注意到在视图模型中定义并用于 Grid 的数据源并没有触发它的 Change 事件!
但是,当用户按下“添加新记录”按钮时,以下内容用于在数据源内创建一个新的空模型,将 .add() 函数返回的这个新模型设置为“currentAccount”:
var newRow = this.get("accRegDatasource").add( this._makeAccountModel( 0 ) );
this.set("currentAccount", newRow);
var row = input_map.grid().find(" tr[data-uid='" + newRow.uid + "']");
input_map.kendoGrid().select(row);
在上面,我添加了一个新的空行。一旦我开始编辑表单字段,它们就会自动反映在网格上,而无需调用 grid.refresh。甚至视图模型中定义的数据源也在触发它的更改事件。
知道为什么会出现这种行为吗?谢谢