2016-12-20 4 views
1

Ich möchte eine Spalte hinzufügen, die die Summe einiger Spalten enthalten wird.Erstellen Sie eine neue Spalte mit der Summe einiger weniger Spalten in jqgrid

Grundsätzlich möchte ich folgendes konvertieren:

enter image description here

auf die folgenden:

enter image description here

Aber dieses getan werden muss dynamisch, dh ich werde liefern colModel id e Th Spalten Ich möchte die Summe von.

P.S. Verwenden von Version 4.13.5 von free-jqgrid.

+0

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

+0

@Oleg Datentyp ist default.I liefern Array-Daten zu Datenschlüssel von jqgrid Objekt.Edit Daten nicht erforderlich.Sortieren/Suchen ist erforderlich. –

Antwort

1

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) 
      }); 
     } 
    } 
    ... 
}); 
Verwandte Themen