pet*_*erc 3 kendo-ui kendo-grid
我一直在寻找一种方法,当用户更改为另一行时(就像在Access,SQL Management Studio等中一样),可以自动保存客户端编辑的网格数据。这确实似乎是一个挑战。
一种方案是使用数据源同步,但这是丢失单元格位置的问题(它总是跳到单元格0,0)。
我已经看到了一些巧妙的解决方法(案件返回到牢房,顺便说一句,非常感谢,谢谢),但是经过一些长时间的测试(由我本人和其他人),它似乎有点“浮躁”(也许我只需要做更多的工作)
无论如何,我想探索也许不使用此数据源同步,也许只是做服务器端“手动”调用(这有点可惜,但是如果那是我们需要做的,就这样)。如果执行此操作,我将要重置单元格小红色单元格“脏”指示器。
我以为我可以使用类似于此方案的东西 (除了要重置标志,我要取消设置)。
因此,如上述链接所示,我有以下内容:
var pendingChanges = [];
function gridEdit(e) {
var cellHeader = $("#gridID").find("th[data-field='" + e.field + "']");
if (cellHeader[0] != undefined) {
var pendingChange = new Object();
pendingChange.PropertyName = e.field;
pendingChange.ColumnIndex = cellHeader[0].cellIndex;
pendingChange.uid = e.items[0].uid;
pendingChanges.push(pendingChange);
}
}
Run Code Online (Sandbox Code Playgroud)
我们从数据源更改中调用gridEdit的位置。
var dataSrc = new kendo.data.DataSource({
change: function (e) {
gridEdit(e);
},
Run Code Online (Sandbox Code Playgroud)
现在假设我们有一个检测行更改的回调,我想我可以做以下事情...
// clear cell property (red indicator)
for (var i = 0; i < pendingChanges.length; i++) {
var row = grid.tbody.find("tr[data-uid='" + pendingChanges[i].uid + "']");
var cell = row.find("td:eq(" + pendingChanges[i].ColumnIndex + ")");
if (cell.hasClass("k-dirty-cell")) {
cell.removeClass("k-dirty-cell");
console.log("removed dirty class");
}
}
pendingChanges.length = 0;
// No good, we loose current cell again! (sigh..)
//grid.refresh();
Run Code Online (Sandbox Code Playgroud)
当此操作不起作用时,我还尝试重置数据源脏标志。
// clear dirty flag from the database
var dirtyRows = $.grep(vm.gridData.view(),
function (item) {
return item.dirty == true;
})
if (dirtyRows && dirtyRows.length > 0) {
dirtyRows[0].dirty = false;
}
Run Code Online (Sandbox Code Playgroud)
在上述方法均无效后,我尝试了grid.refresh(),但这与数据源同步存在相同的问题(我们松开了当前单元格)
有人会知道如何清除该单元格指示器,而不刷新似乎完全失去我们编辑上下文的整个网格吗?
在此先感谢您的帮助!
CSS:
.k-dirty-clear {
border-width:0;
}
Run Code Online (Sandbox Code Playgroud)
网格编辑事件:
edit: function(e) {
$("#grid .k-dirty").addClass("k-dirty-clear"); //Clear indicators
$("#grid .k-dirty").removeClass("k-dirty-clear"); //Show indicators
}
Run Code Online (Sandbox Code Playgroud)
http://jsbin.com/celajewuwe/2/edit
| 归档时间: |
|
| 查看次数: |
7347 次 |
| 最近记录: |