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 № 1Il 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);
});