Ich erstelle jetzt eine Webanwendung mit Ext-JS 4.0.2 und verwende ein editierbares Raster, um die Daten zu steuern, die für eine Tabelle auf derselben Seite angezeigt werden.
Um das Raster editierbar zu machen, folgte ich der API-Dokumentation und verwendete folgendes:
%Vor%Für dieses Gitter gibt es jedoch mehrere Zellen, die nicht geändert werden sollen.
Ich könnte den Event-Handler einfach dazu bringen, die Daten wieder in den richtigen Zustand zu ändern, sobald sie im Grid geändert wurden, aber das scheint hacky zu sein, schwer zu warten und nicht lesbar. Gibt es einen besseren Weg, dies zu tun? Ich habe die API gelesen, kann aber keine nützlichen Attribute finden.
AKTUALISIEREN
Wie für diese spezielle App, deaktivieren Sie einfach die erste Zeile würde funktionieren. Aber ich bin auch daran interessiert, mehrere Gitter auszuwählen und sie nicht editierbar zu machen (stell dir ein Sudoku-Spiel mit einem Gitter vor).
Wie ich aus Kommentaren verstehe, möchten Sie die erste Zeile nicht editierbar machen. Es gibt eine hässliche aber schnelle Lösung. Ordnen Sie Ihrem Plugin beforeedit
handler zu. Und wenn ein Ereignis ausgelöst wird, überprüfen Sie, welche Zeile gerade bearbeitet wird. Wenn zuerst - return false
:
Schauen Sie sich Dokumente an für beforeedit
.
AKTUALISIEREN
Docs sagen, dass beforeedit
einen solchen Satz von Parametern hat:
Aber da ist ein Fehler. Die richtige Fortsetzung ist:
%Vor%Ich habe das Beispiel aufgrund dieser Tatsache aktualisiert.
Sie können ColumnModel angeben, um editierbare und nicht bearbeitbare Spalten zu deklarieren:
%Vor% In diesem Beispiel ist die Spalte id
unsichtbar, die Spalten 1 und 2 editierbar (mit Text- und Zahleneditoren) und die Spalte 3 ist nicht editierbar.
UPDATE:
Zeilenbearbeitung verhindern:
%Vor%Wie Ziyao Wei erwähnte, ist die Dokumentation für das beforeEdit-Ereignis falsch. Sie müssen jedoch auf den Parameter 'editor' verweisen, um den Zeilenindex und andere Werte zu erhalten, nicht den ersten Objektparameter 'e'. Aktualisiertes Beispiel:
%Vor%Tags und Links javascript grid extjs