Dr. Web Logo. Untertext: Seit 1997.
  • Beste Agenturen
  • Agentur-Standorte von A bis Z 🌇
  • Magazin
  • Newsletter 📩
  • Login
  • Agentur bewerben ✅
  • Kontakt
  • Werben 🎉
  • Sponsored Post
  • Jobs
Menü
  • Beste Agenturen
  • Agentur-Standorte von A bis Z 🌇
  • Magazin
  • Newsletter 📩
  • Login
  • Agentur bewerben ✅
  • Kontakt
  • Werben 🎉
  • Sponsored Post
  • Jobs
  • Werben
  • Gastbeitrag
  • Sponsored Post
  • Kontakt
  • Login
  • Newsletter
Suche
  • Beste Agenturen
  • Agentur-Standorte
      Beste Agenturen Augsburg Altstadt von oben.

      Augsburg

      Blick auf die Mittlere Brücke in Basel bei Sonnenaufgang.

      Basel

      Berlin bei Nacht, Blick von oben Richtung Fernsehturm.

      Berlin

      Das Ruhrstadion in Bochum von oben, bei Sonnenuntergang.

      Bochum

      Bonn von oben, mit Blick auf den Rhein.

      Bonn

      Dortmund von oben Panoramafoto.

      Dortmund

      Blick auf die Elbufer-Promenade Dresdens sowie Frauenkirche und Zwinger.

      Dresden

      Duisburg Innenhafen bei Sonnenuntergang.

      Duisburg

      Düsseldorf von oben mit Blick auf den Fernsehturm.

      Düsseldorf

      Die Skyline von Essen von oben.

      Essen

      Blick von oben auf das Bankenviertel in Frankfurt am Main.

      Frankfurt am Main

      Freiburg Innenstadt vom Münster aus fotografiert mit Blick Richtung Schlossberg und Sonnenuntergang..

      Freiburg im Breisgau

      Hamburg bei Nacht, Blick auf die Speicherstadt.

      Hamburg

      Blick auf das Neue Rathaus, Hannover.

      Hannover

      Agenturen in Innsbruck von oben mit Blick auf die Alpen.

      Innsbruck

      Karlsruhe von oben

      Karlsruhe

      Sonnenuntergang in Köln mit Blick auf den Dom. Im Vordergrund die Hohenzollernbrücke.

      Köln

      Leipzig Innenstadt bei Sonnenuntergang und von oben.

      Leipzig

      München bei Fön mit Blick in die bayerischen Alpen.

      München

      Nürnberg Altstadt Stadtmauer von oben

      Nürnberg

      Blick auf das Flussufer der Innenstadt von Regensburg bei Nacht.

      Regensburg

      Agenturen Salzburg: Blick auf die Altstadt und die Hohensalzburg.

      Salzburg

      Stuttgart von oben.

      Stuttgart

      Wien von oben. Blick auf den Stephansdom.

      Wien

      Zürich von oben.

      Zürich

  • Magazin
    • Content Marketing
    • CSS
    • E-Commerce
    • E-Mail-Marketing
    • Freelancer
    • Fotografie
    • HTML
    • Online-Marketing
    • Responsive Design
    • SEO
    • UX Design
    • Webdesign
    • Website erstellen
    • WordPress
    • Dr. Web Autoren
  • Jobs
Menü
  • Magazin
    • Content Marketing
    • CSS
    • E-Commerce
    • E-Mail-Marketing
    • Freelancer
    • Fotografie
    • HTML
    • Online-Marketing
    • Responsive Design
    • SEO
    • UX Design
    • Webdesign
    • Website erstellen
    • WordPress
    • Dr. Web Autoren
  • Jobs
Agentur eintragen →
Dr. Web Logo. Untertext: Seit 1997.
  • Beste Agenturen
  • Agentur-Standorte
      Beste Agenturen Augsburg Altstadt von oben.

      Augsburg

      Blick auf die Mittlere Brücke in Basel bei Sonnenaufgang.

      Basel

      Berlin bei Nacht, Blick von oben Richtung Fernsehturm.

      Berlin

      Das Ruhrstadion in Bochum von oben, bei Sonnenuntergang.

      Bochum

      Bonn von oben, mit Blick auf den Rhein.

      Bonn

      Dortmund von oben Panoramafoto.

      Dortmund

      Blick auf die Elbufer-Promenade Dresdens sowie Frauenkirche und Zwinger.

      Dresden

      Duisburg Innenhafen bei Sonnenuntergang.

      Duisburg

      Düsseldorf von oben mit Blick auf den Fernsehturm.

      Düsseldorf

      Die Skyline von Essen von oben.

      Essen

      Blick von oben auf das Bankenviertel in Frankfurt am Main.

      Frankfurt am Main

      Freiburg Innenstadt vom Münster aus fotografiert mit Blick Richtung Schlossberg und Sonnenuntergang..

      Freiburg im Breisgau

      Hamburg bei Nacht, Blick auf die Speicherstadt.

      Hamburg

      Blick auf das Neue Rathaus, Hannover.

      Hannover

      Agenturen in Innsbruck von oben mit Blick auf die Alpen.

      Innsbruck

      Karlsruhe von oben

      Karlsruhe

      Sonnenuntergang in Köln mit Blick auf den Dom. Im Vordergrund die Hohenzollernbrücke.

      Köln

      Leipzig Innenstadt bei Sonnenuntergang und von oben.

      Leipzig

      München bei Fön mit Blick in die bayerischen Alpen.

      München

      Nürnberg Altstadt Stadtmauer von oben

      Nürnberg

      Blick auf das Flussufer der Innenstadt von Regensburg bei Nacht.

      Regensburg

      Agenturen Salzburg: Blick auf die Altstadt und die Hohensalzburg.

      Salzburg

      Stuttgart von oben.

      Stuttgart

      Wien von oben. Blick auf den Stephansdom.

      Wien

      Zürich von oben.

      Zürich

Agentur eintragen →
Dr. Web » Webdesign » YUI – ein AJAX-Riese startet – Teil 2

YUI – ein AJAX-Riese startet – Teil 2

YUI ist YAHOOs mächtige Javascript-Komponentensammlung für Web-Anwendungen. Die DataTable-Komponente ist ein Widget, mit dem Daten in Tabellen dargestellt und bearbeitet werden können. Rene Schmidt zeigt an einem mitgelieferten Beispielskript, wie man Mehrfachselektionen...

Sozial sein
Share on facebook
Share on twitter
Share on linkedin
Share on xing
Share on whatsapp
Share on email
  • Keine Kommentare
Lesedauer: 5 Minuten
  • von Dr. Web Redaktion
  • 17. Dezember 2007
Bookmarke mich
Share on pocket

HELD Werbeagentur

Philipp Pistis - WordPress Agentur

One Step Webdesign

Webtronix Media GmbH

minddraft AG

Wee Media | Webdesign Agentur

YUI ist YAHOOs mächtige Javascript-Komponentensammlung für Web-Anwendungen. Die DataTable-Komponente ist ein Widget, mit dem Daten in Tabellen dargestellt und bearbeitet werden können. Rene Schmidt zeigt an einem mitgelieferten Beispielskript, wie man Mehrfachselektionen auf einfache Weise realisiert.

Das Yahoo-User-Interface (kurz: YUI) ist eine Javascript-Bibliothek, mit der asynchrone Web-Anwendungen zügig entwickelt werden können. Das YUI-Archiv bringt sehr viele praktische Beispiele für die Verwendung mit, so dass die Lernkurve schnell erklommen werden kann.

Allerdings sind auch einige weniger praktische Beispiele dabei. Ein Beispiel ist das Skript dt_formatting_source.html, mit dem die Möglichkeiten zur Formatierung von DataTable-Zellen demonstriert wird. In der verwendeten Tabelle sind Checkboxen, Radio-Felder und Buttons eingebaut, die sich unterschiedlich verhalten. Im Fall der Checkboxen ist das Verhalten allerdings eher sinnfrei. Klickt man eine Checkbox an, wird zwar ein Häkchen gemacht, was man aber nun weiter damit anfangen soll, wird nicht demonstriert. Außerdem „vergessen“ die Checkboxen ihren Zustand, sobald die Tabelle neu sortiert wird. An eine vernünftig benutzbare Mehrfachselektion ist mit diesem Checkbox-Verhalten jedenfalls nicht zu denken.


Das Verhalten der Checkboxen ist nicht sinnvoll

Event-Handler erweitern
Aber das muss ja nicht so bleiben. Erweitern wir also das Skript. Sie finden es, nachdem Sie das YUI-Archiv entpackt haben, im Verzeichnis „examples/datatable/dt_formatting_source.html“. Vorweg: DataTable-Elemente werden hier über bestimmte Events (engl. „Ereignisse“) mit Event-Handlern verknüpft. Event-Handler sind einfach Funktionen oder Objektmethoden. Die Klasse „DataTable“ bietet einen fertigen Event namens „checkboxClickEvent“ an. Der wird, wie der Name andeutet, abgearbeitet, wenn eine Checkbox angeklickt wird. Im Beispielskript ist bereits eine Methode enthalten, die mit diesem Ereignis verknüpft ist:

Screenshot
Der originale checkBoxClickEvent-Handler

Der Event-Handler liest das Feld „field5“ aus und zeigt in einem alert() an, welchen Inhalt das Feld und welchen Status die Checkbox hat. Hier wird auch schon eine Besonderheit von DataTable deutlich: Hinter der Darstellung von Informationen als HTML-Tabelle und Tabellenzellen verbirgt sich eine Datenstruktur, aus der die Daten kommen. Das heißt, das was dargestellt wird, muss sich nicht mit der dahinter stehenden Datenstruktur decken. Im Beispiel ist es so, dass die Checkbox zwar in der Tabelle dargestellt wird und ihr Zustand ausgelesen werden kann – allerdings gibt es keine Entsprechung der Checkbox in der Datenstruktur. Das ist auch der Grund dafür, dass nach einem Sortieren die Checkbox-Zustände verloren gehen. Sortiert wird nämlich nicht die Tabelle selbst, sondern die Datenstruktur. Die Tabelle wird nach dem Sortieren neu aufgebaut. Und weil der Zustand der Checkboxen dann wieder unbekannt ist, erhalten die Checkboxen keinen Haken.

Checkbox-Zustand speichern
Wir müssen also der Datenstruktur „mitteilen“, dass es auch den Zustand der Checkboxen speichern soll. Den Event-Handler erweitern wir wie folgt:

Screenshot
Der neue checkBoxClickEvent-Handler

Die Erweiterung macht Folgendes: Der Datensatz (engl. „Record“) der angeklickten Zeile wird ausgelesen und im Objekt „upd“ gespeichert (Zeile 125). Dann greifen wir einfach auf ein Objektattribut namens „cbState“ („Checkbox-Status“) zu. Wenn es bisher nicht existiert hat, wird es angelegt und diesem der Wert „true“ zugewiesen (daran denken: die Checkbox wurde gerade angeklickt, wenn der Event-Handler aufgerufen wird). Falls es schon existiert hat, bekommt es den entgegengesetzten Wert, der schon darin gespeichert war, also „false“ statt „true“ oder umgekehrt (Zeile 126). In Zeile 127 aktualisieren wir den alten Datensatz mit neuen Daten aus „upd“.

Die drei Zeilen kann man auch einfach durch eine einzige Zeile ersetzen, wie in Zeile 130 zu sehen. Dort wird direkt auf die Objektvariable „_oData“ zugegriffen. Allerdings ist das „getrickst“. Der Unterstrich in „_oData“ deutet es bereits an: „oData“ ist eine als privat deklarierte Variable, die nicht von außen manipuliert werden soll. Es ist nicht sicher, dass diese Vorgehensweise in späteren Versionen noch funktionieren wird, daher sollte man eigentlich nicht auf private Attribute zugreifen, schon gar nicht schreibend.

Checkbox-Zustand wieder auslesen
Wenn man das Skript jetzt ausführt, einige Checkboxen markiert und die Tabelle neu sortiert, ist noch kein anderes Verhalten erkennbar, obwohl doch die Checkbox-Zustände in der Datenstruktur gespeichert sind. Um das anschaulich zu prüfen, können Sie das Firefox-Plugin FireBug benutzen. Eine Alternative wäre, der Spaltendefinition „myColumnDefs“ das neue Attribut „cbState“ hinzuzufügen:

Screenshot
Zum Testen die Spalte cbState anlegen

Wenn Sie das Skript nun ausführen, einige Checkboxen markieren und die Tabelle sortieren, steht in der Spalte „cbState“ der Zustand der Checkboxen. Diese Spalte ist aber nicht notwendig für die Funktion und kann wieder entfernt werden. Was nun noch fehlt, ist die Restaurierung der Checkbox-Zustände nach dem Sortieren. Das erledigt ein neuer Event-Handler:

Screenshot
Unser neuer columnSortEvent-Handler

Die Methode ist mit dem DataTable-Ereignis „columnSortEvent“, also dem Sortier-Ereignis, verbunden. In der For-Schleife wird von hinten durch alle Datensätze iteriert. Das Iterieren von hinten ist bei DataTable besser, insbesondere beim Löschen von Datensätzen. Wird ein Datensatz gelöscht, werden die Indizes der Datenstruktur nicht aktualisiert, so dass es dann beim Vorwärts-Durchlaufen der Struktur zu Fehlzugriffen auf nicht existente Datensätze kommen kann. Bei jedem Durchlauf wird für jeden Datensatz geprüft, ob „cbState“ den boolschen Wert „true“ besitzt. Ist das der Fall, wird ein Häkchen gemacht. Wenn nicht, dann nicht.

Die Checkboxen treten in Aktion
Jetzt werden die Checkbox-Zustände gespeichert und nach dem Sortieren wieder hergestellt. Das ist näher an der Praxis, aber machen kann man so noch nichts. Was jetzt fehlt, ist eine Aktion, die anschaulich demonstriert, wie man die selektierten Datensätze erfasst und verarbeiten kann.

Dazu fügen Sie irgendwo im HTML einen Schaltknopf ein:

 <button name="testknopf" id="testknopf"
type="button">Test</button>

Die Objektreferenz auf das HTML-Element holen wir mit „YAHOO.util.Dom.get(„testknopf“)“. Wir verbinden es mit dem generischen Event-Handler „click“, der erstaunlicherweise ausgeführt wird, wenn auf den Knopf geklickt wird:

Screenshot
Horchen, ob jemand den Knopf drückt

Es wird wieder rückwärts iteriert und alle Werte in „field5“ angezeigt, die selektiert wurden. Das so veränderte Beispiel sollte nun ein gutes Sprungbrett für eigene Versuche sein. Für die Radio-Felder gilt im Übrigen das Gleiche wie für die Checkboxen.


So ists besser

Dies ist nur eine von vielen Möglichkeiten, DataTable vernünftige Checkboxen zu verpassen. Haben Sie eine andere, bessere, schnellere Lösung? Schreiben Sie eine Nachricht, die besten Lösungen stellen wir gerne vor.

Kleiner Exkurs zum Schluss
Ein interessanter und eigentlich auch naheliegender Ansatz für Mehrfachselektion in DataTable-Widgets zeigt das Beispiel dt_rowselect.html. Die Selektion wird in diesem Beispiel allerdings nicht über Checkboxen realisiert, sondern über die Tastatur und Maus: Bei einem Klick auf einen Datensatz muss die STRG-Taste gedrückt werden, um mehrfach zu selektieren. Dieser Ansatz ist allerdings nicht intuitiv oder leicht verständlich, insbesondere für Anfänger. Ein weiterer Stolperstein ist die DataTable-Methode „isSelected()“. Sie soll Record-Indizes, HTML-Elemente oder Record-Referenzen annehmen können und feststellen, ob sie selektiert sind oder nicht. Die Methode funktioniert allerdings nicht korrekt, sie liefert in vielen Fällen einfach garnichts zurück oder wird überhaupt nicht ausgeführt. Außerdem wird die Selektion intern über gesetzte oder nicht gesetzte Stylesheet-Klassen festgestellt, was offensichtlich ein Missbrauch dieser Technik ist. CSS ist nicht dazu gedacht, Programmlogik abzubilden, sondern dient nur der Gestaltung. Insofern erscheint dieses vorgegebene Modell der Mehrfachselektion derzeit nicht so naheliegend wie es eigentlich sein sollte. ™

Links zum Artikel:

  • developer.yahoo.com/yui (engl.)
  • DataTable-Customformatting-Beispiel (engl.)
  • Erweitertes Beispiel zum Herunterladen (2 Kb)

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0

Dr. Web Redaktion

Dr. Web Redaktion

An einem „Dr. Web Redaktion“ Artikel arbeiten i.d.R. mehrere Autoren, unter anderem Michael Dobler, Markus Seyfferth und Jörg Mrusek.

Agenturpartner

Carmen Hurst | Webdesign

Bad Homburg

TIKAL Communication E-Commerce Agentur Hamburg

Hamburg

WordPress Werkstatt

Freiburg im Breisgau

pictibe – Werbeagentur & Marketingagentur

Köln

Chris Hortsch Webdesign

Berlin

Alle Agenturpartner

Jobs

WordPress Developer – Vollzeit

Remote

Senior Online Marketing Manager und stv. Geschäftsführer

Innsbruck

Grafik-Designerin

Freiburg im Breisgau

Texter / Junior Content Marketing Manager

Innsbruck

API Developer für die TelemaxX Cloud

Karlsruhe

Zum richtigen Job

Newsletter

Tipps, Tricks, Ratgeber. Unser Newsletter: Jeden Dienstag frisch gedruckt in Deinem Mail-Postfach.

Lust auf mehr? Wir empfehlen folgende Artikel:

Webdesign Trends 2022: Das erwartet uns

Animation, Interaktion und Immersion: Das neue Jahr bringt zahlreiche Trends im Webdesign mit sich und entwickelt einzelne Bereiche weiter. Bereits jetzt ist klar – in Sachen Webdesign-Trends hat das Jahr 2022 einiges zu bieten.

 →   

Google Fonts sind nicht mehr datenschutzkonform. Was nun?

Mit dem Urteil des Landgerichts München vom 20.01.2022 ist nun auch die Verwendung von Google Fonts über die Fonts API nicht mehr datenschutzkonform. Zeit sich nach einer Lösung umzusehen, wie Du dennoch Google Fonts weiterhin einsetzen kannst.

 →   

Dunkel Design – herzlich willkommen auf Dr. Web

Wir freuen uns, dass Moritz Dunkel mit seiner Agentur DNKL.DSGN aus Köln an Bord ist. Moritz Dunkel von Dunkel Design verstärkt unser Agentur-Netzwerk. Inhaltsstarke Seiten

 →   

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Dr. Web Logo weiss.

Pionier für Digitale Transformation. Seit 1997. ✅  Wissen, Tipps, Ratgeber, Dienstleister: Wir bringen wir die digitale Transformation von Unternehmen praxisnah voran.

Share on facebook
Share on twitter
Share on linkedin
Share on xing
Share on whatsapp
Share on email

Wissen finden

  • Dr. Web Autoren
  • Amazon SEO
  • Content Marketing
  • CMS
  • CSS
  • Digitalisierung
  • E-Commerce
  • Freelancer
  • Jobs & Karriere
  • Online-Marketing
  • SEO
  • UX Design
  • Webdesign
  • Website erstellen
  • WordPress
  • WooCommerce
Menü
  • Dr. Web Autoren
  • Amazon SEO
  • Content Marketing
  • CMS
  • CSS
  • Digitalisierung
  • E-Commerce
  • Freelancer
  • Jobs & Karriere
  • Online-Marketing
  • SEO
  • UX Design
  • Webdesign
  • Website erstellen
  • WordPress
  • WooCommerce

Rechtliches

  • Datenschutzerklärung
  • Geschäftsbedingungen (AGB)
  • Impressum
  • Kontakt
  • Nach oben ↑
Menü
  • Datenschutzerklärung
  • Geschäftsbedingungen (AGB)
  • Impressum
  • Kontakt
  • Nach oben ↑

Für Agenturen & Unternehmer

  • Als Agentur eintragen
  • Beste Agenturen finden
  • Städte: von A bis Z.
  • Agenturen in Augsburg
  • Agenturen in Basel
  • Agenturen in Berlin
  • Agenturen in Bochum
  • Agenturen in Bonn
  • Agenturen in Bremen
  • Agenturen in Dortmund
  • Agenturen in Dresden
  • Agenturen in Duisburg
  • Agenturen in Düsseldorf
  • Agenturen in Essen
  • Agenturen in Frankfurt am Main
  • Agenturen in Freiburg
  • Agenturen in Hamburg
  • Agenturen in Hannover
  • Agenturen in Innsbruck
  • Agenturen in Karlsruhe
  • Agenturen in Köln
  • Agenturen in Leipzig
  • Agenturen in München
  • Agenturen in Münster
  • Agenturen in Nürnberg
  • Agenturen in Offenbach am Main
  • Agenturen in Regensburg
  • Agenturen in Salzburg
  • Agenturen in Stuttgart
  • Agenturen in Wien
  • Agenturen in Zürich
  • Digitalagentur finden
  • Webdesign-Agentur finden
  • Werbeagentur finden
Menü
  • Als Agentur eintragen
  • Beste Agenturen finden
  • Städte: von A bis Z.
  • Agenturen in Augsburg
  • Agenturen in Basel
  • Agenturen in Berlin
  • Agenturen in Bochum
  • Agenturen in Bonn
  • Agenturen in Bremen
  • Agenturen in Dortmund
  • Agenturen in Dresden
  • Agenturen in Duisburg
  • Agenturen in Düsseldorf
  • Agenturen in Essen
  • Agenturen in Frankfurt am Main
  • Agenturen in Freiburg
  • Agenturen in Hamburg
  • Agenturen in Hannover
  • Agenturen in Innsbruck
  • Agenturen in Karlsruhe
  • Agenturen in Köln
  • Agenturen in Leipzig
  • Agenturen in München
  • Agenturen in Münster
  • Agenturen in Nürnberg
  • Agenturen in Offenbach am Main
  • Agenturen in Regensburg
  • Agenturen in Salzburg
  • Agenturen in Stuttgart
  • Agenturen in Wien
  • Agenturen in Zürich
  • Digitalagentur finden
  • Webdesign-Agentur finden
  • Werbeagentur finden
Das große Dr. Web Icon-Set: 970+ Icons, im SVG-Format​

Lade Dir jetzt das Icon-Set
kostenlos herunter ↓

Über 970 Dr. Web-Icons, kostenlos.
Danke nein, ist nichts für mich.
Invalid email address
Vielen Dank! Bitte schau noch in Dein Postfach und bestätige die Anmeldung.