2017-01-14 5 views
0

Wie es in einer anderen Frage kommentiert (jqgrid editoptions custom_func with required=false), jetzt muss ich Eingabe mit Custom_func validieren. Diese Validierung erfordert den Vergleich des Eingabewerts mit anderen Spaltenwerten, die vom Benutzer eingegeben wurden. Mit anderen Worten, Sie müssen alle aktuellen Zeilenwerte vor dem Senden abrufen, um das Validierungsergebnis zu bestimmen. ich es geschafft, einige bestimmte Spalte auf diese Weise zu bekommen ...Jqgrid custom_func Validierung und alle Zeilen bearbeiten Werte

function myCustomFunc(value, colName) { 
    //consider I have a global var "selRowId" which is updated onSelectRow event. 
    var someColValue = $('select#'+selRowId+'_someColName').val(); 
    // ... here the validation using the "someColValue" ... 
} 

Ich denke, das nicht die beste Methode ist. Ich würde eine Methode bevorzugen, die ein Objekt ähnlich "getRowData" zurückgibt, aber alle Eingabewerte vom Benutzer enthält.

Ich bin mit jqGrid 4.6.0

Antwort

1

Es scheint, dass Sie Inline-Bearbeitung verwenden. jqGrid in der Version 4.6 hat keine anderen Möglichkeiten, auf die aktuellen Werte zuzugreifen, aber die aktuellen Quellen von free jqGrid (vorläufige Version 4.13.7 von GitHub) enthält einen neuen Callback saveRowValidation und das Ereignis jqGridInlineSaveRowValidation, was vereinfachen könnte, was Sie implementieren müssen.

Der Callback saveRowValidation enthält einen Parameter, wie die meisten anderen im freien jqGrid implementierten Callbacks. Der Parameter, lassen Sie uns wir es options nennen, enthält die folgenden Eigenschaften

  • mode mit dem Wert "edit" oder "add"
  • rowid - der Wert id-Attribut der Bearbeitungsreihen
  • newData - das Objekt mit modifizierten Daten der Zeile
  • savedRow - das Objekt mit den Daten der Zeile vor der Bearbeitung
  • options - die Option s von Inline-Editing
  • iRow - der Index der Zeile aus dem oberen Rand des Gitters
  • tr - DOM-Element, das die Bearbeitungsreihe darstellen

Ich denke, dass options.newData ist das, was Sie brauchen. Siehe den Kommentar zu the commit für weitere Details.

+0

Ich denke saveRowValidation ist eine großartige Lösung, ich würde es versuchen, sobald ich neue Version von freien jqgrid implementieren kann. Die aktuelle Version ist 4.13.6? Oder 4.13.7? – Aberel

+0

@Aberel: Die letzte * veröffentlichte * Version ist "4.13.6" (24. Dezember 2016). Nach den ersten Änderungen im Code nach dem letzten Release inkrementiere ich die Versionsnummer (auf "4.13.7-pre"). Der Callback 'saveRowValidation' (und das Event' jqGridInlineSaveRowValidation') wurde am 4. Januar 2017 übergeben. Ich veröffentliche die neue Version normalerweise jeden Monat. Also die nächste "4.13.7" -Version plane ich in ca. 1-2 Wochen zu veröffentlichen. – Oleg

Verwandte Themen