Eine DataGrid-Komponente (Datenraster) erlaubt Ihnen die Anzeige von Daten in einem Raster aus Zeilen und Spalten, wobei die Daten aus einem Array bezogen werden oder aus einer externen XML-Datei, die von einem Parser analysiert und für das DataProvider-Objekt in ein Array eingelesen wird. Die DataGrid-Komponente umfasst eine vertikale und horizontale Bildlaufleiste, unterstützt die Ereignisverarbeitung (einschließlich bearbeitbarer Zellen) und die Möglichkeit zur Sortierung der Daten.
Eigenschaften wie Schriftart, Farbe und Spaltenränder in einem Raster können angepasst und in der Größe geändert werden. Sie können einen selbst definierten Movieclip als Zellrenderer für eine Spalte des Rasters verwenden. (Ein Zellrenderer sorgt für die korrekte Anzeige des Zellinhalts.) Bildlaufleisten können angezeigt oder ausgeblendet werden und mithilfe der DataGrid-Methoden lässt sich eine Anzeige im Stil eines Seitenlayouts definieren. Weitere Informationen zur Anpassung finden Sie im Abschnitt zur DataGridColumn-Klasse im
ActionScript 3.0 Referenzhandbuch
für Flash Professional
.
Benutzerinteraktion mit der DataGrid-Komponente
Die Interaktion mit einer DataGrid-Komponente kann über die Maus oder die Tastatur erfolgen.
Wenn sowohl die Eigenschaft
sortableColumns
als auch die Spalteneigenschaft
sortable
den Wert
true
haben, lassen sich die Daten per Klick auf die Spaltenüberschrift nach den Werten dieser Spalte sortieren. Sie können die Sortierung einer bestimmten Spalte deaktivieren, indem Sie die Spalteneigenschaft
sortable
auf
false
setzen.
Wenn die Eigenschaft
resizableColumns
den Wert
true
aufweist, können Sie die Spaltenbreite ändern, indem Sie die Spaltentrennlinien in der Überschriftenzeile ziehen.
Das Klicken in einer bearbeitbaren Zelle verschiebt den Fokus auf diese Zelle. Das Klicken auf eine nicht bearbeitbare Zelle hat keine Auswirkungen auf den Fokus. Eine einzelne Zelle ist dann bearbeitbar, wenn die Eigenschaften
DataGrid.editable
und
DataGridColumn.editable
der Zelle
true
sind.
Weitere Informationen finden Sie in den Abschnitten zur DataGrid- und DataGridColumn-Klasse im
ActionScript 3.0 Referenzhandbuch
.
Wenn eine DataGrid-Instanz durch Klicken oder durch Drücken der Tabulatortaste den Fokus erhält, können Sie sie mit folgenden Tasten steuern:
Schlüssel
|
Beschreibung
|
Nach-unten-Taste
|
Wenn eine Zelle bearbeitet wird, verschiebt sich die Einfügemarke an das Textende der Zelle. Ist die Zelle nicht bearbeitbar, erfolgt die Auswahl mit der Nach-unten-Taste wie mit der List-Komponente.
|
Nach-oben-Taste
|
Wenn eine Zelle bearbeitet wird, wird die Einfügemarke an den Textanfang der Zelle verschoben. Ist die Zelle nicht bearbeitbar, erfolgt die Auswahl mit der Nach-oben-Taste wie mit der List-Komponente.
|
Umschalt+Nach-oben-/Nach-unten-Taste
|
Ist das Datenraster nicht bearbeitbar und
allowMultipleSelection
ist
true
, werden mehrere benachbarte Zeilen ausgewählt. Die umgekehrte Richtungstaste deaktiviert die ausgewählten Zeilen, bis die Anfangszeile überschritten wird, ab der die Zeilen in umgekehrter Richtung ausgewählt werden.
|
Umschalt+Klick
|
Wenn
allowMultipleSelection
den Wert
true
hat, werden alle Zeilen zwischen der ausgewählten Zeile und der Position der Einfügemarke (hervorgehobene Zelle) ausgewählt.
|
Strg+Klick
|
Wenn
allowMultipleSelection
den Wert
true
hat, werden weitere Zeilen ausgewählt, die nicht benachbart sein müssen.
|
Nach-rechts-Taste
|
Wenn eine Zelle bearbeitet wird, wird die Einfügemarke ein Zeichen nach rechts verschoben. Ist die Zelle nicht bearbeitbar, hat die Nach-rechts-Taste keine Wirkung.
|
Nach-links-Taste
|
Wenn eine Zelle bearbeitet wird, wird die Einfügemarke ein Zeichen nach links verschoben. Ist die Zelle nicht bearbeitbar, hat die Nach-links-Taste keine Wirkung.
|
Startseite
|
Wählt die erste Zeile im Datenraster aus.
|
Ende
|
Wählt die letzte Zeile im Datenraster aus.
|
Bild-auf
|
Wählt die erste Zeile innerhalb einer Seite des Datenrasters aus. Eine Seite umfasst die Anzahl an Zeilen, die im Datenraster Platz haben ohne weiterzublättern.
|
Bild-ab
|
Wählt die letzte Zeile innerhalb einer Seite des Datenrasters aus. Eine Seite umfasst die Anzahl an Zeilen, die im Datenraster Platz haben ohne weiterzublättern.
|
Eingabetaste/Umschalt+Eingabetaste
|
Ist eine Zelle bearbeitbar, wird die Änderung übernommen und die Einfügemarke an die Zelle in derselben Spalte der nächsten Zeile verschoben (je nach Verwendung der Umschalttaste nach oben oder unten).
|
Umschalt+Tab/Tab
|
Ist das Datenraster bearbeitbar, wird der Fokus auf das vorige/nächste Element verschoben, bis das Ende der Spalte erreicht ist, und dann auf die vorige/nächste Zeile, bis die erste bzw. letzte Zelle erreicht ist. Ist die erste Zelle ausgewählt, verschiebt Umschalt+Tab den Fokus auf das vorige Steuerelement. Ist die letzte Zelle ausgewählt, verschiebt Tab den Fokus auf das nächste Steuerelement.
Ist das Datenraster nicht bearbeitbar, wird der Fokus auf das vorige/nächste Steuerelement verschoben.
|
Die DataGrid-Komponente lässt sich als Grundlage für zahlreiche Typen datenbetriebener Anwendungen einsetzen. Sie können auf einfache Weise eine formatierte Tabellenansicht der Daten anzeigen oder mit den Möglichkeiten des Zellrenderers komplexere und bearbeitbare Teilbereiche von Benutzeroberflächen erstellen. Die DataGrid-Komponente kann beispielsweise für folgende Einsatzzwecke verwendet werden:
Für die Erstellung von Anwendungen mit der DataGrid-Komponente ist es hilfreich, das Design der List-Komponente zu kennen und zu verstehen, da die DataGrid-Klasse eine Erweiterung der SelectableList-Klasse ist. Weitere Informationen zur SelectableList-Klasse und zur List-Komponente finden Sie in den Abschnitten zur SelectableList- und List-Klasse im
ActionScript 3.0 Referenzhandbuch
.
Die einer Anwendung hinzugefügten DataGrid-Komponenten können Sie Bildschirmleseprogrammen anhand der folgenden ActionScript-Codezeilen zugänglich machen:
import fl.accessibility.DataGridAccImpl;
DataGridAccImpl.enableAccessibility();
Diese Anweisung ist unabhängig von der Anzahl der Instanzen nur einmal pro Komponente erforderlich. Weitere Informationen finden Sie im Handbuch
Verwenden von Flash
im Kapitel 18, „Barrierefreie Inhalte erstellen“.
Parameter der DataGrid-Komponente
Die folgenden Authoring-Parameter können für jede Instanz einer DataGrid-Komponente im Eigenschaften- oder Komponenten-Inspektor festgelegt werden:
allowMultipleSelection
,
editable
,
headerHeight
,
horizontalLineScrollSize
,
horizontalPageScrollSize
,
horizontalScrolllPolicy
,
resizableColumns
,
rowHeight
,
showHeaders
,
verticalLineScrollSize
,
verticalPageScrollSize
und
verticalScrollPolicy
. Jeder dieser Parameter besitzt eine entsprechende ActionScript-Eigenschaft desselben Namens. Weitere Informationen zu den möglichen Werten für diese Parameter finden Sie im Abschnitt zur DataGrid-Klasse im
ActionScript 3.0 Referenzhandbuch
für Flash Professional
.
Erstellen einer Anwendung mit der DataGrid-Komponente
Um eine Anwendung mit der DataGrid-Komponenten zu erstellen, müssen Sie zuerst bestimmen, woher die Daten stammen. Typischerweise stammen die Daten aus einem Array, das Sie in das Raster einlesen können, indem Sie die Eigenschaft
dataProvider
setzen. Sie können die Daten mithilfe der Methoden der Klassen „DataGrid“ und „DataGridColumn“ in das Raster einfügen.
Verwenden eines lokalen Datenproviders mit der DataGrid-Komponente
Im folgenden Beispiel wird ein Datenraster erstellt, um die Mitgliederliste eines Softballteams anzuzeigen. Die Mitgliederliste wird in einem Array (
aRoster
) angezeigt, das der Eigenschaft
dataProvider
der DataGrid-Komponente zugewiesen wird.
-
Wählen Sie in Flash „Datei“ > „Neu“ und dann „Flash-Datei“ (ActionScript 3.0).
-
Ziehen Sie die DataGrid-Komponente vom Bedienfeld „Komponenten“ auf die Bühne.
-
Geben Sie im Eigenschafteninspektor den Instanznamen
aDg
ein.
-
Öffnen Sie das Bedienfeld „Aktionen“, wählen Sie in der Hauptzeitleiste Bild 1 aus und geben Sie den folgenden ActionScript-Code ein:
import fl.data.DataProvider;
bldRosterGrid(aDg);
var aRoster:Array = new Array();
aRoster = [
{Name:"Wilma Carter", Bats:"R", Throws:"R", Year:"So", Home: "Redlands, CA"},
{Name:"Sue Pennypacker", Bats:"L", Throws:"R", Year:"Fr", Home: "Athens, GA"},
{Name:"Jill Smithfield", Bats:"R", Throws:"L", Year:"Sr", Home: "Spokane, WA"},
{Name:"Shirley Goth", Bats:"R", Throws:"R", Year:"Sr", Home: "Carson, NV"},
{Name:"Jennifer Dunbar", Bats:"R", Throws:"R", Year:"Fr", Home: "Seaside, CA"},
{Name:"Patty Crawford", Bats:"L", Throws:"L", Year:"Jr", Home: "Whittier, CA"},
{Name:"Angelina Davis", Bats:"R", Throws:"R", Year:"So", Home: "Odessa, TX"},
{Name:"Maria Santiago", Bats:"L", Throws:"L", Year:"Sr", Home: "Tacoma, WA"},
{Name:"Debbie Ferguson", Bats:"R", Throws:"R", Year: "Jr", Home: "Bend, OR"},
{Name:"Karen Bronson", Bats:"R", Throws:"R", Year: "Sr", Home: "Billings, MO"},
{Name:"Sylvia Munson", Bats:"R", Throws:"R", Year: "Jr", Home: "Pasadena, CA"},
{Name:"Carla Gomez", Bats:"R", Throws:"L", Year: "Sr", Home: "Corona, CA"},
{Name:"Betty Kay", Bats:"R", Throws:"R", Year: "Fr", Home: "Palo Alto, CA"},
];
aDg.dataProvider = new DataProvider(aRoster);
aDg.rowCount = aDg.length;
function bldRosterGrid(dg:DataGrid){
dg.setSize(400, 300);
dg.columns = ["Name", "Bats", "Throws", "Year", "Home"];
dg.columns[0].width = 120;
dg.columns[1].width = 50;
dg.columns[2].width = 50;
dg.columns[3].width = 40;
dg.columns[4].width = 120;
dg.move(50,50);
};
Die Funktion
bldRosterGrid()
legt die Größe des Datenrasters fest sowie die Reihenfolge der Spalten und deren Größen.
-
Wählen Sie „Steuerung“ > „Film testen“.
Definieren der Spalten und deren Sortierung für eine DataGrid-Komponente in einer Anwendung
Beachten Sie, dass der Benutzer den Inhalt eines Datenrasters nach den Werten einer Spalte sortieren kann, indem er auf die Überschrift der betreffenden Spalte klickt.
Im folgenden Beispiel werden einer DataGrid-Komponente mit der
addColumn()
-Methode DataGridColumn-Instanzen hinzugefügt. Die einzelnen Spalten repräsentieren die Namen der Spieler und deren Punkte (Scores). In dem Beispiel wird zudem die Eigenschaft
sortOptions
so eingestellt, dass sie die Sortieroptionen für jede Spalte angibt:
Array.CASEINSENSITIVE
für die Spalte „Name“ und
Array.NUMERIC
für die Spalte „Score“. Die Größe des Datenrasters wird angepasst, indem die Länge (length) auf die Anzahl der Zeilen gesetzt wird und die Breite (width) auf 200.
-
Wählen Sie in Flash „Datei“ > „Neu“ und dann „Flash-Datei“ (ActionScript 3.0).
-
Ziehen Sie die DataGrid-Komponente vom Bedienfeld „Komponenten“ auf die Bühne.
-
Geben Sie im Eigenschafteninspektor den Instanznamen
aDg
ein.
-
Öffnen Sie das Bedienfeld „Aktionen“, wählen Sie in der Hauptzeitleiste Bild 1 aus und geben Sie den folgenden ActionScript-Code ein:
import fl.controls.dataGridClasses.DataGridColumn;
import fl.events.DataGridEvent;
import fl.data.DataProvider;
// Create columns to enable sorting of data.
var nameDGC:DataGridColumn = new DataGridColumn("name");
nameDGC.sortOptions = Array.CASEINSENSITIVE;
var scoreDGC:DataGridColumn = new DataGridColumn("score");
scoreDGC.sortOptions = Array.NUMERIC;
aDg.addColumn(nameDGC);
aDg.addColumn(scoreDGC);
var aDP_array:Array = new Array({name:"clark", score:3135}, {name:"Bruce", score:403}, {name:"Peter", score:25})
aDg.dataProvider = new DataProvider(aDP_array);
aDg.rowCount = aDg.length;
aDg.width = 200;
-
Wählen Sie „Steuerung“ > „Film testen“.
Erstellen einer DataGrid-Komponenteninstanz mithilfe von ActionScript-Code
Im folgenden Beispiel wird mithilfe von ActionScript ein Datenraster erstellt und mit einem Array an Spielernamen und Punkten gefüllt.
-
Erstellen Sie ein neues Flash-Dokument (ActionScript 3.0).
-
Ziehen Sie die DataGrid-Komponente vom Bedienfeld „Komponenten“ in das Bedienfeld „Bibliothek“ des aktuellen Dokuments.
Hierdurch wird die Komponente der Bibliothek hinzugefügt, sie wird jedoch nicht in der Anwendung angezeigt.
-
Öffnen Sie das Bedienfeld „Aktionen“, wählen Sie in der Hauptzeitleiste Bild 1 aus und geben Sie den folgenden ActionScript-Code ein:
import fl.controls.DataGrid;
import fl.data.DataProvider;
var aDg:DataGrid = new DataGrid();
addChild(aDg);
aDg.columns = [ "Name", "Score" ];
aDg.setSize(140, 100);
aDg.move(10, 40);
Dieser Code erstellt die DataGrid-Instanz und legt dann Größe und Position des Rasters fest.
-
Erstellen Sie ein Array, fügen Sie dem Array Daten hinzu, und legen Sie das Array als Datenprovider für das Datenraster fest:
var aDP_array:Array = new Array();
aDP_array.push({Name:"Clark", Score:3135});
aDP_array.push({Name:"Bruce", Score:403});
aDP_array.push({Name:"Peter", Score:25});
aDg.dataProvider = new DataProvider(aDP_array);
aDg.rowCount = aDg.length;
-
Wählen Sie „Steuerung“ > „Film testen“.
Laden einer XML-Datei in ein Datenraster
Im folgenden Beispiel werden mithilfe der DataGridColumn-Klasse die Spalten des Datenrasters erstellt. Das Datenraster wird ausgefüllt, indem als
value
-Parameter des Konstruktors
DataProvider()
ein XML-Objekt übergeben wird.
-
Erstellen Sie mithilfe eines Texteditors eine XML-Datei mit den folgenden Daten und speichern Sie sie unter
team.xml
in demselben Ordner, in dem später die FLA-Datei gespeichert wird.
<team>
<player name="Player A" avg="0.293" />
<player name="Player B" avg="0.214" />
<player name="Player C" avg="0.317" />
</team>
-
Erstellen Sie ein neues Flash-Dokument (ActionScript 3.0).
-
Doppelklicken Sie im Bedienfeld „Komponenten“ auf die DataGrid-Komponente, um sie der Bühne hinzuzufügen.
-
Geben Sie im Eigenschafteninspektor den Instanznamen
aDg
ein.
-
Öffnen Sie das Bedienfeld „Aktionen“, wählen Sie in der Hauptzeitleiste Bild 1 aus und geben Sie den folgenden ActionScript-Code ein:
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;
import flash.net.*;
import flash.events.*;
var request:URLRequest = new URLRequest("team.xml");
var loader:URLLoader = new URLLoader;
loader.load(request);
loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
function loaderCompleteHandler(event:Event):void {
var teamXML:XML = new XML(loader.data);
var nameCol:DataGridColumn = new DataGridColumn("name");
nameCol.headerText = "Name";
nameCol.width = 120;
var avgCol:DataGridColumn = new DataGridColumn("avg");
avgCol.headerText = "Average";
avgCol.width = 60;
var myDP:DataProvider = new DataProvider(teamXML);
aDg.columns = [nameCol, avgCol];
aDg.width = 200;
aDg.dataProvider = myDP;
aDg.rowCount = aDg.length;
}
-
Wählen Sie „Steuerung“ > „Film testen“.
|
|
|