Прежде чем я отвечу на вопрос, просто тривиально неверно, когда вы говорите, «динамически меняйте форматирование ячейки».
Вы не меняете ячейку formatter
, вы меняете способ оформления ячейки .
Каждый раз, когда значение загружается в ячейку, вызывается средство форматирования. Кроме того, функция onStyleROw вызывается для строки, в которой находится ячейка.
Это означает, что у вас есть две опции для изменения цвета ячейки. Вы можете сделать это на основе ячейки или сделать так, чтобы ваш форматировщик сделал что-то простое, например, обернув значение <span>
, имеющим другой цвет стиля. Я покажу вам оба.
Вот первое решение без изменения любого существующего кода сетки, и оно изменит всю строку, используя onStyleRow.
Решение 1 с использованием onStyleRow
Шаг 1. (Подключите onStyleRow)
dojo.connect (grid4, "onStyleRow", styleRowGridPayment);
Шаг 2. (Создайте свой styleRowGridPayment
метод.)
var styleGridPayment = function(inRow) {
if( null !== grid4.getItem( inRow.index ) ) {
item = grid4.getItem( inRow.index );
if( item.netchange < 0 ) {
inRow.customStyles += "color:red;";
} else {
inRow.customStyles += "color:green;";
}
}
}
Это должно сделать это для использования onStyleRow.
Решение 2, с использованием форматера
В вашей декларации поля у вас будет
{
field : 'netchange',
name : 'netchange',
width : '30px'
formatter: formatNetchange
}
Обратите внимание, что я добавил формат Netchange в качестве форматера.
Тогда вы просто создаете свой форматер.
formatNetchange = function(value){
if(value < 0){
color = "red";
} else {
color = "green";
}
return "<span style='color:" + color "'>" + value "</span>";
}