JQGrid: Dynamisch festlegen einer Zelle nicht bearbeitbar, basierend auf den Inhalten
Ich habe einige Fragen bekommen, einige Zellen (mit cellEdit: true) werden nicht bearbeitet, obwohl die Spalte festgelegt ist editierbar.
Ich habe viele Wege versucht, wie beforeEditCell, formatter, usw. Keiner scheint zu arbeiten.
Der nächste, den ich habe, ist, indem Sie eine Formatierung auf die Spalte, die würde ich gerne bearbeitet werden und dann mit setCell um die "nicht-editierbar-Zelle" Klasse (Codefragment unten). Das erste mal, wenn Sie klicken Sie auf die Zelle, leider geht in den Bearbeiten-Modus, aber wenn Sie klicken Sie irgendwo, und versuchen Sie zu re-Bearbeiten Sie die Zelle, es ist erfolgreich nicht bearbeitet werden.
Habe ich auch versucht, mit dem gleichen Schnitt, aber in beforeEditCell, es erfolgreich Stoppt die Zelle bearbeitet wird, aber in der Wendung 'friert' das Gitter. Sie können nicht mehr wählen Sie eine andere Zelle.
function noEditFormatter(cellValue, options, rowObject) {
if (cellValue == 'test')
jQuery("#grid").jqGrid('setCell', options.rowId, 'ColName', '', 'not-editable-cell');
return cellValue;
}
Jede Hilfe wäre sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Idee setCell Methode add der Klasse 'nicht-editierbare-Zellen" auf Zellen, die nicht editierbar ist richtig. Sie wählen nur den falschen Ort, um dies zu tun. Innerhalb von benutzerdefinierten formatter, das raster kann noch nicht gebaut, bis zum Ende. Ich empfehle Ihnen die Verwendung loadComplete oder gridComplete zu prüfen, die raster enthalten, der aktuelle Seite und markieren Sie einige Zellen nicht editierbar.
Bereitete ich ein Beispiel, die dies aufzeigen. Wie in deinem Beispiel alle Zellen mit "test" - text gekennzeichnet sind, als nicht bearbeitet werden. In der Weise können Sie untersuchen Zellen, und markieren Sie weitere Zellen, die nicht bearbeitet werden.
editRow
für alle Zeilen des Rasters innerhalb desloadComplete
.grid.jqGrid('setCell',id,'name','','not-editable-cell');
};
In colModel:
jede Spalte Optionen hinzufügen
Ich zu lösen hatte, diese jetzt (2015) und fand ein Ansatz, der sauber aussieht: geben Sie eine Funktion für
cellbeginedit
zurückgibtfalse
wenn die Zelle darf nicht bearbeitet werden. Entnommen aus dem verlinkten Artikel und modifiziert werden: