Die einfachste Möglichkeit, Ihre Anforderungen zu implementieren, wäre die Verwendung von jsonmap
und sorttype
definiert als Funktion, die den berechneten Wert der Spalte zurückgibt. Zusätzlich müssten Sie afterSetRow
Callback implementieren, die den Wert nach der Änderung der Zeile (nach setRowData
) fixiert.
Die entsprechende Implementierung könnte wie in the demo sein. Die Demo definiert das Raster mit der Spalte total
, die die Summe der Spalten amount
und tax
anzeigt. Der Code der Demo sieht wie folgt aus:
var calculateTotal = function (item) {
return parseFloat(item.amount) + parseFloat(item.tax);
};
$("#list").jqGrid({
...
colModel: [
...
{ name: "amount", template: "number", ... },
{ name: "tax", template: "number", ... },
{ name: "total", width: 76, template: "number", editable: false,
jsonmap: function (item) {
return calculateTotal(item);
},
sorttype: function (cellValue, item) {
return calculateTotal(item);
}},
...
],
afterSetRow: function (options) {
var item = options.inputData;
if (item.total === undefined) {
// test is required to prevent recursion
$(this).jqGrid("setRowData", options.rowid, {
total: calculateTotal(item)
});
}
}
...
});
Es gibt mehrere Möglichkeiten, das Problem zu lösen, aber die beste Wahl hängt von anderen Details ab. Welchen "Datentyp" benutzen Sie? Müssen Sie die Daten bearbeiten? Welche anderen Funktionen benötigen Sie in der Spalte "Alle" (Sortieren, Suchen, ...)? – Oleg
@Oleg Datentyp ist default.I liefern Array-Daten zu Datenschlüssel von jqgrid Objekt.Edit Daten nicht erforderlich.Sortieren/Suchen ist erforderlich. –