0

1つの列がグリッド内の他の列の値に基づいて計算された値を持つグリッドを使用する必要があります...

サンプル要件として、年齢を示す1つの列があります。これは編集可能な列です...年齢が変更された場合、次の列は100の値を計算する必要があります-更新された年齢...

ここで要件をデモするためにjsfiddleを作成しましたJSFiddle

{field: 'computedAge', displayName: '100 -Age',cellTemplate:self.calculatedCellTemplate}

年齢列が更新されたときに入力したい計算列です

誰かが私がこれを達成する方法を提案できますか?

4

1 に答える 1

2

これは、次の2つの手順で実現できます。

computedAge(1)計算されたプロパティを含むデータリスト内のすべてのアイテムのインスタンス化関数を作成します。

function Item(data) {
    this.name = ko.observable(data.name);
    this.age = ko.observable(data.age);
    this.computedAge = ko.computed(function(){
        return 100 - this.age();
    }, this);
}

(2)単純な作成ではなく、インスタンスを作成するためにソース配列をマップしますobservableArray

self.browsers = ko.observableArray(
    ko.utils.arrayMap(
        datastore.initialData,
        function(data){ return new Item(data); }
    )
);

実例: http: //jsfiddle.net/xp6xa/

更新:self.calculatedCellTemplate自己更新セルを取得するには、次のよう に定義することを忘れないでください。

    self.calculatedCellTemplate = '<span data-bind="text: $parent.entity.computedAge"></span>';

http://jsfiddle.net/xp6xa/3/

于 2013-03-22T08:33:54.057 に答える