Kendo ui 剑道网格:删除脏单元格指示器

Kendo ui 剑道网格:删除脏单元格指示器,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我一直在寻找一种方法,当用户更改到另一行时(就像在access、sql management studio等中),自动保存客户端编辑的网格数据。这看起来确实有点挑战性 一种方案是使用数据源同步,但这解决了丢失单元格位置的问题(它总是跳到单元格0,0) 我已经被展示了一些巧妙的解决方法(案件结束后回到牢房,顺便说一句,非常感谢), 但经过一些长时间的测试(由我自己和其他人)后,它似乎有点“故障”(也许我需要做更多的工作) 无论如何,我想探索一下,也许不使用这个数据源同步,也许只是“手动”执行服务器

我一直在寻找一种方法,当用户更改到另一行时(就像在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);
    }
   }
其中,我们从数据源更改中调用gridEdit

var dataSrc = new kendo.data.DataSource({
change: function (e) {
  gridEdit(e);
},
现在假设我们有一个检测行更改的回调,我想我可以做以下操作

// 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();

在上述操作都不起作用后,我尝试了grid.refresh(),但这与数据源同步有相同的问题(我们失去了当前单元格)

有人知道我怎样才能清除这个单元格指示器,而不刷新整个网格,因为它似乎完全失去了我们的编辑环境

提前感谢您的帮助

Css:

.k-dirty-clear {
  border-width:0;
}
网格编辑事件:

  edit: function(e) {
    $("#grid .k-dirty").addClass("k-dirty-clear"); //Clear indicators
    $("#grid .k-dirty").removeClass("k-dirty-clear"); //Show indicators
  }

解决该问题的简单方法是将“标志的颜色覆盖为透明。 只需重写“.k-dirty”类(边框颜色) 只需将上面的行添加到css中

CSS:
//k-dirty是剑道网格用于标记尚未保存的已编辑单元格的类。
//我们重写那个类是因为我们不想要红旗
k-肮脏{
边框颜色:透明;

}
这也可以通过应用以下样式来完成

<style>
  .k-dirty{
    display: none;      
  }
</style>

k-肮脏{
显示:无;
}

Hi Tarek,谢谢你的回复。css实际上阻止了红色指示器的出现(因此我们从未看到它)。当我们编辑单元格时,我仍然希望有这个设置,但在以后的某个阶段可以删除它(以编程方式-在我的情况下,当调用vm.rowChangedCallback时,即当您使用tab转到新行时)。@Terek,非常感谢!通过应用$(“#grid.k-dirty”).addClass(“k-dirty-clear”);它会清除指示器,如果我重新编辑单元格,则会再次设置指示器。这正是我想要的!干杯。-对不起,我把你的名字拼错了(而且可以再编辑一次)!干杯
<style>
  .k-dirty{
    display: none;      
  }
</style>