events - 剑道 UI 数据源更改事件 : is it working?

标签 events kendo-ui grid datasource

dataSource.changed 事件是否有效?

实例化我的 Kendo UI 网格后,我将按照此处的文档绑定(bind)更改事件:

http://docs.kendoui.com/api/framework/datasource#change

//To set after initialization
dataSource.bind("change", function(e) {
    // handle event
});

我正在这样做:

// initialize
$("#grid").kendoGrid({
        dataSource: dataSource, 

        blah blah blah
)

});
// end of initialization



// bind afterwards
 var grid = $('#grid').data('kendoGrid');
  grid.dataSource.bind("change", function (e) {
      dataChanged();
  });


 //also tried a setTimeout:

  // bind afterwards
  setTimeout(function () {
    var grid = $('#grid').data('kendoGrid');
    grid.dataSource.bind("change", function (e) {
        dataChanged();
    });
}, 350);



 function dataChanged() {
   // handle "change" whatever that means -- documentation definition is hazy
   // does reassigning the data array constitute a change?
   // does changing the value of a particular item in the data array
   // constitute a change?
   // does removing an item from the data array constitute a change?

    var grid = $("#grid").data("kendoGrid");
    grid.refresh();
 }

但是当我执行以下任一操作时,不会调用我的 dataChanged() 函数:

var grid = $('#grid').data('kendoGrid');
grid.dataSource.data()[1]["deptname"] = 'XXX';

或者

grid.dataSource.data = aDifferentArray;

我不确定“更改”事件到底在听什么。究竟是什么应该触发它?

如果我创建一个全新的数据源,并将其分配给已有数据源的网格,我看不出这将如何触发现有数据源的更改事件。这样的事件(网格注意到其 dataSource 已被替换为不同的事件)将是网格级事件,而不是数据源级事件,对吗?

最佳答案

需要注意的重要一点是支持 DataSource 的数据是 ObservableArray ,并且该数组中的数据项被转换为 ObservableObject s。
change数据源的事件在 2 个条件下触发:

  • 数据ObservableArray更改(插入、删除记录)。这方面的一个例子是使用 DataSource.add()DataSource.remove()职能。
  • 如果属性更改事件从 ObservableData 之一冒泡到 DataSource数组中的对象。但是,就像 Kendo MVVM 框架的其余部分一样,属性更改的通知仅在其 .set("propertyName", value) 时发生。函数被调用。

  • 这就是为什么grid.dataSource.data()[1]["deptname"] = 'XXX';没有触发更改事件。如果您将其更改为:grid.dataSource.data()[1].set("deptname", 'XXX');然后它应该开始工作。基本上,想想change响应从 data 触发的 MVVM 属性更改而触发的事件可观察对象。

    至于改变数据数组grid.dataSource.data = aDifferentArray;我实际上不确定这是否会或应该触发改变。我从来没有尝试过。

    关于events - 剑道 UI 数据源更改事件 : is it working?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893175/

    相关文章:

    vb.net - 在 VB.NET 的新线程上引发事件

    javascript - 禁用 KendoGrid 中过滤列的动画

    kendo-ui - Kendo网格与MVVM,绑定(bind)列可见性

    jquery 如何捕获回车键并将事件更改为选项卡

    ios - RxSwift 中的 RACCommand 相当于什么?

    c# - 在 C#3 和 C#4 中是否有更简洁的方法来定义自定义事件?

    JavaScript 运行时错误 : "object doesn' t support property or method"in Internet Explorer

    python - 使用 widget.grid() 时,Tkinter Radiobutton 填充多行

    Css 网格和列。不确定这个

    python - 如何以 plotly 方式显示点网格?