/ / Динамічно змінюється колір комірки в сітку Додзе заснований на зміні значення - додзьо, сітка

Динамічно змінюється колір комірки в сітку Додзьо на основі зміни значення - додзьо, сітка

У мене є dojo grid, в якій в основному 4 стовпці. Сітка спочатку порожня.

Нижче наведено мою сітку макета

var gridLayout = [{
defaultCell: { width: "8%", editable: true, type: dojox.grid.cells._Widget, styles: "text-align: right;"  },
rows: [
{ name: "Item Id", field: "ItemId",hidden:true},
{ name: "Type", field: "LineType", width: "8%",  type: dojox.grid.cells.Select,styles: "text-align: center;"},
{ name: "Amount", field: "Amount", width: "8%", styles: "text-align: center;", type: dojox.grid.cells.TextBox},
{ name: "Code", field: "Code", width: "8%", styles: "text-align: center;",formatter:changeCodeColor, type: dojox.grid.cells.TextBox}
]
}];

Натиснувши кнопку Add Line Items в формі iзавантажувати елементи з сервера з значенням у комірці "Кількість" як "порожній", але тип і код автоматично заповнено. Якщо користувач змінює значення в ячейці коду, я повинен змінити колір коду. Нижче наведено функцію, яку я написав

function changeCodeColor(code, rowIndex, cell)
{
var codeDetails = validateCode(code)
if(!codeDetails)
{
cell.customStyles.push("color:red");;
}
return code;
}

Функція validateCode перевіряє на сервері, якщо код дійсний чи ні. Якщо код недійсний або не доступний колір налаштування iam як червоний.

Але проблема полягає в тому, що цей код виконується кожного разу, коли заселяється значення (тобто зміни вручну, а також коли система автоматично додає). Мені потрібно зробити перевірку лише тоді, коли користувач змінює вручну.

Будь-яка допомога буде корисною

Відповіді:

0 для відповіді № 1

Formatter використовується для визначення способу відображення даних у вашому магазині. Для обробника подій слід використовувати події onCellClick від DataGrid, як це,

var grid = new Grid({
store: store,
selectionMode: "single",
structure: [[
{ field: "name", name: "Name" }
]]}, dojo.byId("grid"));
grid.startup();

dojo.connect(grid, "onCellClick", function(e) {
var dataItem = grid.selection.getSelected();
console.dir(dataItem);
});