Kendo Grid saveChanges()不起作用

时间:2017-02-13 21:04:42

标签: kendo-grid

我正在尝试使用自定义命令按钮设置行的状态字段。网格数据源传输定义如下:

transport: {
  read: {
    url: "/agent/AgentList",
    type: "POST",
    dataType: "json",
    data: addAntiForgeryToken
  },
  update: {
    url: "/agent/UpdateAgent",
    type: "POST",
    dataType: "json",
    data: addAntiForgeryToken
  }
},

自定义命令定义如下:

{
  command: [
    {
      name: "accept",
      visible: function(dataItem) {
        return dataItem.StatusId === 1;
      },
      text: "@T("Ralfeus.Agent.Accept")",
      click: function(e) {setOfferResponse(this, e, 2);}
    }
  ]
}

实际设置字段的功能定义如下:

function setOfferResponse(grid, sender, response) {
  sender.preventDefault();
  var dataItem = grid.dataItem($(sender.currentTarget).closest("tr"));
  dataItem.StatusId = response;
  grid.editRow($(sender.currentTarget).closest("tr"));
  grid.saveChanges();
}

我期望saveChanges()调用触发数据源传输的更新方法。但是,它既不会导致任何服务器请求,也不会报告错误。

我还尝试将grid.saveChanges()替换为grid.dataSource.sync()(顺便说一下,有什么区别?),如同建议here但结果相同:没有HTTP请求,没有错误

1 个答案:

答案 0 :(得分:3)

好的,找到了原因。以编程方式更改dataItem字段不会使它们变脏。所以我不得不弄脏它:

dataItem.dirty = true;
grid.saveChanges();

然后它起作用了