3

グリッドにバインドされたデータソースへのポインターを定義する監視可能なオブジェクトと、データソースで宣言した集計値を返すカスタム フィールドがあります。

2 番目のフィールド ("totAmount") をカスタム HTML 要素にバインドしたいと考えています。

その値を更新する方法がわかりません。データソースの「read()」メソッドを呼び出すと、バインドされた値もインターフェイスで更新されるべきではありませんか? 「プリミティブ」モデル フィールドでのみ機能しますか?

=== JAVASCRIPT ===
var vm = kendo.observable({
    gridDatasource: new kendo.data.DataSource({ ... }),

    totAmount: function() {
        var ds = this.get("gridDatasource");
        var value = (ds.aggregates()) ? ds.aggregates().totAmount : 0;
        return value;
    }
});

=== HTML ===
<span data-bind="text: totAmount"></span>
4

2 に答える 2

2

私の以前の答えは完全に正しいものではありませんでした: グリッドの変更時 (各行選択時) にモデルの更新をバインドします。データソースの「変更」イベントにバインドすることをお勧めします。

=== JAVASCRIPT ===
var vm = kendo.observable({
    gridDatasource: new kendo.data.DataSource({ ... }),
    totAmount: 0
});

vm.gridDatasource.bind("change", function(e) {
    vm.set("totAmount", this.aggregates().totAmount);
});


=== HTML ===
<span data-bind="text: totAmount"></span>
于 2012-12-11T16:30:40.963 に答える
0

これまでのところ、データソースにバインドされたグリッドの「変更」イベントに値を設定して、以前の投稿 ( HTML 要素をグリッドの選択した行/データ項目にバインドする) と同様の解決策を見つけました。

=== JAVASCRIPT ===
var vm = kendo.observable({
    gridDatasource: new kendo.data.DataSource({ ... }),
    totAmount: 0
});

$("#grid").kendoGrid({
    change: function(e) {
        vm.set("totAmount", this.dataSource.aggregates().totAmount);
    }
});


=== HTML ===
<span data-bind="text: totAmount"></span>
于 2012-12-11T12:46:26.183 に答える