/ / Modifica dinamica del colore di una cella nella griglia Dojo in base alla modifica del valore: dojo, griglia

Cambiare dinamicamente il colore di una cella nella griglia di Dojo in base al cambiamento di valore: dojo, grid

Ho una griglia dojo, che ha principalmente 4 colonne. La griglia è inizialmente vuota.

sotto è il mio layout di griglia

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

Facendo clic sul pulsante Aggiungi elementi pubblicitari nel modulo irecupera elementi dal server con valore nella cella Quantità come Vuoto, ma tipo e codice vengono compilati automaticamente. Se l'utente cambia valore nella cella Codice, devo cambiare il colore del codice. Di seguito è la funzione che ho scritto

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

Le funzioni validateCode verificano nel server se il codice è valido o meno. Se il codice non è valido o non è disponibile, impostare il colore come rosso.

Ma il problema è che questo codice viene eseguito ogni volta che viene popolato un valore (ovvero modifica manuale e quando il sistema si aggiunge automaticamente). Devo eseguire la convalida solo quando l'utente cambia manualmente.

Qualsiasi aiuto sarebbe utile

risposte:

0 per risposta № 1

Il formatter viene utilizzato per definire come devono essere visualizzati i dati del tuo negozio. Per il gestore di eventi, devi utilizzare l'evento onCellClick di DataGrid in questo modo,

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