如何检查剑道网格是否有变化?听说有dirty
房产,但是找不到。
问问题
31158 次
6 回答
39
您可以在 Grid 的底层 DataSource 上使用“hasChanges”方法:
grid.dataSource.hasChanges();
$('#divGrid').data('kendoGrid').dataSource.hasChanges();
于 2014-06-10T16:22:32.380 回答
21
添加的行会将dirty 属性设置为true,更新的行也将如此。但是,删除的行存储在其他地方(在 _destroyed 集合中)。将此函数传递给网格的数据源以查看它是否有更改。
function doesDataSourceHaveChanges(ds)
{
var dirty = false;
$.each(ds._data, function ()
{
if (this.dirty == true)
{
dirty = true;
}
});
if (ds._destroyed.length > 0) dirty = true;
return dirty;
}
于 2012-10-04T18:44:24.600 回答
9
您可以获得通知并使用数据源的更改事件,该事件将在您分页/排序/组/过滤/创建/读取/更新/删除记录的任何位置发生。
要将处理程序附加到它,请使用:
$('#YourGrid').data().kendoGrid.dataSource.bind('change',function(e){
//the event argument here will indicate what action just happned
console.log(e.action)// could be => "itemchange","add" or "remove" if you made any changes to the items
})
更新:如果用户更新了任何模型,数据源的 .hasChanges() 方法将返回 true。
于 2012-10-04T20:36:02.543 回答
3
grid.dataSource.hasChanges 将让您知道数据源是否已更改
if (datasource.hasChanges() === true) {
alert('yes');
} else {
alert('no');
}
于 2014-10-20T13:56:54.780 回答
2
最方便的方法是使用datasource.hasChanges()
. 但是,这需要Id
在模式中定义字段。
从文档:
检查数据项是否已更改。需要在 schema.model.id 中配置 [ID 字段],否则将始终返回 true。
如果您没有定义 Id 字段,则可以使用无数种方法之一来迭代数据本身。
var isDataSourceDirty = function (ds) {
var dirty = ds._data.filter(function(x){
return x.dirty === true;
});
return dirty.length > 0 || ds._destroyed.length;
};
于 2018-04-17T06:53:55.857 回答
1
值得一试:
var hasDirtyRow = $.grep(gridDataSource.view(), function(e) { return e.dirty === true; });
if (hasDirtyRow.length != 0)
{
// grid has dirty row(s)
}
于 2012-10-05T00:47:27.200 回答