/ / Alterando dinamicamente a cor de uma célula na grade do Dojo com base na mudança de valor - dojo, grade

Alterar dinamicamente a cor de uma célula na grade do Dojo com base na mudança de valor - dojo, grade

Eu tenho uma grade dojo, que tem principalmente 4 colunas. A grade está inicialmente vazia.

abaixo está o meu layout de grade

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}
]
}];

Ao clicar no botão Adicionar itens de linha no formato ibuscar itens do Servidor com valor na célula Quantidade como Vazio, mas o tipo e o código são preenchidos automaticamente. Se o usuário alterar o valor na célula Código, preciso alterar a cor do código. Abaixo está a função que escrevi

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

As funções validateCode verificam no servidor se o código é válido ou não. Se o código não for válido ou não estiver disponível, definiremos a cor como vermelho.

Mas o problema é que esse código é executado sempre que um valor é preenchido (ou seja, alteração manual e quando o sistema é adicionado automaticamente). Eu preciso fazer a validação somente quando o usuário mudar manualmente.

qualquer ajuda seria util

Respostas:

0 para resposta № 1

O Formatador é usado para definir como os dados da sua loja devem ser exibidos. Para manipulador de eventos, você deve usar o evento onCellClick do DataGrid como este,

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);
});