Quick Edit-Modus für YUI 2 DataTable
19. August 2010 um 08.42 Uhr von John Lindal | Im Development | 7 Kommentare YUI 2 DataTable liefert glatt Inline-Editing. Wenn disableBtns drehte Konfiguration wird auf der Spalte, einfache Werte wie Strings oder Zahlen fühlt Bearbeitung wie Excel. Allerdings kann die Erfahrung nicht so reagieren, wie eine Desktop-Anwendung, da jede Änderung erfordert normalerweise eine XHR Aufruf an den Server zu speichern (oder ablehnen!) Den neuen Wert. Wenn der Benutzer braucht, um viele der angezeigten Werte ändern, kann es eine langsame und frustrierende Erfahrung sein. Um das zu lösen, entwickelte ich QuickEditDataTable. Dieser erstreckt sich DataTable zu Quick-Edit-Modus
hinzufügen, die den Betrieb ermöglicht allen editierbare Werte Bulk man verändert werden:
( Klicken Sie auf den Screenshot, um zB spielen mit diesem .)
Übersicht
Um Quick-Edit-Modus aufrufen startQuickEdit() . Zum Verlassen des Quick-Edit-Modus aufrufen cancelQuickEdit() .
Es ist Ihre Verantwortung zu fordern speichern Sie die Änderungen vor cancelQuickEdit() . Um dies zu vereinfachen, bietet QuickEditDataTable getQuickEditChanges() . Dies gibt ein Array von Objekten, eines für jede Zeile. Jedes Objekt enthält nur die Werte, die in dieser Zeile geändert wurden, aus der Säule id's Erläuterungstext. Zum Beispiel, wenn die Tabelle 4 Spalten (Titel, Autor, Jahr, Menge), und der Benutzer nur verändert die Menge in einer Reihe auf 20, dann das Objekt für diese Zeile wäre {quantity:20} . Die anderen Werte würde entfallen.
QuickEditDataTable leicht erweitern YAHOO.widget.ScrollingDataTable , wenn Sie diese Funktionen benötigen, die. Wenn Sie diese benötigen, machen Sie einfach eine Kopie der Quelldatei und ändern Sie die Basisklasse.
Konfiguration
Quick Edit ist ein modales Zustand, in dem die Zelle Formatierer für editierbare Spalten heraus und ersetzt werden vertauscht mit speziellen Formatierer dass generieren input , textarea , oder select Elemente. Nur Spalten, die quickEdit Konfiguration bearbeitet werden können. Die Konfigurationsmöglichkeiten sind:
-
copyDown Wenn das stimmt, wird die oberste Zelle in der Spalte eine Schaltfläche, um den Wert bis auf den Rest der Zeilen zu kopieren.
-
formatter Die Zelle Formatierer, die eine entsprechende Formularfeld machen wird: <input type="text">, <textarea> oder <select>. Standardmäßig wird die Zelle Formatierer
YAHOO.widget.QuickEditDataTable.textQuickEditFormatterist für alle Zellen verwendet, um Elemente zu erzeugen Eingang. Um eintextarea-Element, konfigurieren Sie eine Spalte zu verwendenYAHOO.widget.QuickEditDataTable.textareaQuickEditFormatterstatt. Sie können auch eine benutzerdefinierte Quick Edit Formatierer - siehe unten.-
validation Validation Konfiguration für jedes Feld in der Spalte.
-
css CSS-Klassen-Codierung grundlegende Validierung Regeln:
-
yiv-required Der Wert muss nicht leer sein.
-
yiv-length:[x,y] String muss mindestens
xZeichen und höchstensyZeichen. Mindestens eine von x und y angegeben werden.-
yiv-integer:[x,y] Der ganzzahlige Wert muss mindestens
xund maximaly.xundysind beide optional.-
yiv-decimal:[x,y] Der Dezimalwert muss mindestens sein bei
xund maximaly. Exponenten sind nicht erlaubt.xundysind beide optional.
-
-
fn Eine Funktion, mit der DataTable als die Tragweite und die Zelle bilden Element als Argument aufgerufen wird. Gibt true zurück, wenn der Wert gültig ist. Andernfalls nennen
this.displayQuickEditMessage(...)Irrtum zeigen eine und dann wieder falsch.-
msg Eine Karte der Arten von Nachrichten, die angezeigt wird, wenn ein Grund-oder regex Gültigkeitsregel fehlschlägt wird. Die gültigen Typen sind:
required,min_length,max_length,integer,decimal, undregex. Es gibt keinen Standard für Typregex, so müssen Sie angeben, eine Nachricht, wenn Sie konfigurieren Validierung eines regex. Die Standard-Fehlermeldungen für die anderen Arten sind in gespeichertenYAHOO.widget.QuickEditDataTable.Stringsund kann überschrieben werden und / oder lokalisiert.-
regex Regulärer Ausdruck, dass der Wert erfüllen müssen, um als gültig angesehen werden.
-
Manchmal muss einem nicht bearbeitbaren Spalte anders gerendert werden während Quick Edit-Modus. Das beste Beispiel ist eine Spalte mit einem Link, da die Navigation weg von der Seite, während im Quick-Edit-Modus können verheerend sein. So entfernen Sie den Link bei Quick Edit, konfigurieren qeFormatter für die Spalte zu sein YAHOO.widget.QuickEditDataTable.readonlyLinkQuickEditFormatter . Für E-Mails verwenden YAHOO.widget.QuickEditDataTable.readonlyEmailQuickEditFormatter . Sie können auch schreiben Sie eigene, Nur-Lese-Formatierer. Folgen Sie einfach den normalen Regeln für den Bau einer DataTable Zelle Formatierer.
Custom Quick Edit Formatierer
So schreiben Sie eine benutzerdefinierte Formatierung von Zelle QuickEdit Modus müssen Sie die Struktur-Funktion wie folgt:
Funktion myQuickEditFormatter (el, oRecord, oColumn, oData) { var Markup = "<input Type="text" class="{yiv} yui-quick-edit yui-quick-edit-key:{key}"/> '+ YAHOO.widget.QuickEditDataTable.MARKUP_QE_ERROR_DISPLAY; el.innerHTML = lang.substitute (Markup, { Schlüssel: oColumn.key, Yiv: oColumn.quickEdit.validation? (OColumn.quickEdit.validation.css | |''):'' }); el.firstChild.value = extractMyEditableValue (oData); YAHOO.widget.QuickEditDataTable.copyDownFormatter.apply (this, Argumente); };
Sie können textarea oder select statt input , aber Sie können nur ein einziges Feld.
extractMyEditableValue() nicht funktionieren kann eine separate noch muss es sein, beschränkt auf die Verwendung nur oData . Die Arbeit sollte in der Regel getan inline in der Formatierer Funktion, sondern den Namen der Probe-Funktion macht den Punkt klar.
Sagen und erweitern: Lesezeichen mit del.icio.us | Digg it! | reddit!
7 Kommentare »
RSS-Feed für Kommentare zu diesem Beitrag.
Einen Kommentar schreiben

Copyright © 2006-2011 Yahoo! Inc. Alle Rechte vorbehalten. Datenschutzbestimmungen - Allgemeine Geschäftsbedingungen
Powered by WordPress auf Yahoo! Web Hosting .



Erm ... alles sehr schön, aber wo können wir habhaft werden mit dem Code? Download-Link, anyone?
Kommentar von Nelson Menezes - 22. August 2010 #
Laden Sie die JavaScript-Beispiel die Datei verlinkt: http://jafl.github.com/yui2/quickedit/QuickEdit.js
Kommentar von John Lindal - 23. August 2010 #
Es funktioniert super, und rettete uns ein paar Tage! Vielen Dank für die harte Arbeit, Jungs.
Kommentar von Nelson Menezes - 23. August 2010 #
Sehr schöne Arbeit. Ist Ihre Absicht, diese für kommerzielle Zwecke anzufertigen. Wenn ja, müssen Sie eine offene Lizenz, um den Code hinzuzufügen.
Ich würde es lieben zu können QuickEdit verwenden, da es genau das, was ich für eine der Schnittstellen muss ich bauen brauchen.
Tom
dj99dallas@gmail.com
Kommentar von Tom Desjardins - 28. August 2010 #
Ich habe den Code mit der BSD-Lizenz aktualisiert.
Kommentar von John Lindal - 30. August 2010 #
Great stuff. Erspart mir eine Menge Zeit.
BTW, schlägt die Validierung mit einem JavaScript-Fehler in Zeile 112 der quickedit.js mit this.displayMessage ist keine Funktion.
Ich bin auf Firefox läuft, Fedora 14 64-Bit-und Firebug, wenn es darauf ankommt.
Kommentar von DM - 24. November 2010 #
Achtung! Zum Glück war der Fehler in der Beispiel-Code, nicht in QuickEdit.js. Ich habe die Live-Beispiel aktualisiert.
Kommentar von John Lindal - 29. November 2010 #