Ext-JS: Wie kann die Bearbeitung von Zellen für einzelne Zellen in einem Raster deaktiviert werden?

8

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).

    
Ziyao Wei 02.08.2011, 14:12
quelle

3 Antworten

12

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 :

%Vor%

Schauen Sie sich Dokumente an für beforeedit .

AKTUALISIEREN

Docs sagen, dass beforeedit einen solchen Satz von Parametern hat:

%Vor%

Aber da ist ein Fehler. Die richtige Fortsetzung ist:

%Vor%

Ich habe das Beispiel aufgrund dieser Tatsache aktualisiert.

    
Molecular Man 02.08.2011, 14:45
quelle
6

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%     
Xupypr MV 02.08.2011 14:23
quelle
0

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%     
Bill Sontag 25.10.2016 19:53
quelle

Tags und Links