2013-03-22 4 views
0

мне нужно использовать сетку, в которой один столбец имеет вычисленное значение на основе значений из других столбцов в сетке ...Рассчитанные значения в нокауте koGrid

Как требование образца у меня есть один столбец, который показывает возраст это редактируемый колонок ... если возраст изменяются в следующем столбце должен вычислить значение 100 - обновленный возраст ...

Я создал jsfiddle дем мое требование здесь JSFiddle

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

- это вычисленная колонка, которую я хочу посетить поздно, когда обновляется возрастная колонка

Может ли кто-нибудь предложить, как я мог бы это достичь?

ответ

2

Вы можете достичь этого, только два шага:

(1) Создать функцию создания экземпляра для каждого элемента в вашем DataList с 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) исходный массив Map для создания экземпляров вместо простого observableArray создания.

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

Рабочий пример: http://jsfiddle.net/xp6xa/

Update: Чтобы получить самообновления ячейки не забудьте определить ваш self.calculatedCellTemplate как это:

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

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

+0

Хорошая работа. Единственный вариант: – nav0611

+0

Да, я просто понял это тоже :) и выложили скрипку по адресу http://jsfiddle.net/sudarshan89/HtLk5/14/ – Sudarshan

Смежные вопросы