/ / Dynamische Farbänderung einer Zelle im Dojo-Raster basierend auf der Änderung des Werts - Dojo, Gitter

Dynamisch ändernde Farbe einer Zelle im Dojo-Raster basierend auf einer Wertänderung - Dojo, Raster

Ich habe ein Dojo-Raster, das hauptsächlich aus 4 Spalten besteht. Das Gitter ist anfangs leer.

Unten ist mein Rasterlayout

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

Durch Klicken auf die Schaltfläche "Werbebuchung hinzufügen" im Formular iAbrufen von Elementen vom Server mit dem Wert in der Zelle Amount als leer, Typ und Code werden jedoch automatisch ausgefüllt. Wenn der Benutzer den Wert in der Code-Zelle ändert, muss ich die Farbe des Codes ändern. Unten ist die Funktion, die ich geschrieben habe

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

validateCode-Funktionen prüfen auf dem Server, ob der Code gültig ist oder nicht. Wenn der Code nicht gültig ist oder nicht verfügbar ist, ist die Einstellungsfarbe rot.

Das Problem ist jedoch, dass dieser Code jedes Mal ausgeführt wird, wenn ein Wert gefüllt wird (d. H. Manuelle Änderung sowie wenn das System automatisch hinzugefügt wird). Ich muss die Validierung nur durchführen, wenn der Benutzer manuell geändert wird.

Jede Hilfe wäre nützlich

Antworten:

0 für die Antwort № 1

Mit dem Formatierungsprogramm wird festgelegt, wie die Daten aus Ihrem Geschäft angezeigt werden sollen. Für den Event-Handler sollten Sie das onCellClick-Ereignis von DataGrid wie folgt verwenden:

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