2013-03-22 66 views
0

我需要使用一個網格,其中一列具有基於從網格中的其他列值計算出的值...計算值koGrid

作爲樣品要求我有一列,顯示年齡這是一個可編輯的列...如果年齡改變下一列應計算值爲100 - 更新的時代......

我創建了一個的jsfiddle演示在這裏我的要求JSFiddle

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

是我希望popu的計算列當年齡列更新時間晚了

任何人都可以建議我怎麼能做到這一點?

回答

2

您可以只按兩個步驟實現:

(1)創建與在它computedAge計算財產在你的數據列表的每個項目實例化功能。

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/

+0

好工作。 。它是唯一的選擇 – nav0611 2013-03-22 09:10:31

+0

是的,我只是想到了這一點out too :)並在http://jsfiddle.net/sudarshan89/HtLk5/14/上貼出小提琴 – Sudarshan 2013-03-22 11:22:05