Le composant DataGrid permet d’afficher des données dans une grille de lignes et de colonnes en traçant les données issues d’un tableau ou d’un fichier XML externe, que vous pouvez analyser dans un tableau pour l’élément DataProvider. Le composant DataGrid comporte des fonctionnalités de défilement vertical et horizontal, de prise en charge d’événements (dont une prise en charge des cellules modifiables) et de tri.
Vous pouvez redimensionner et personnaliser des caractéristiques telles que la police, la couleur et les bordures des colonnes d’une grille. Vous pouvez utiliser un clip personnalisé en tant qu’objet CellRenderer pour toute colonne d’une grille. Un objet Cell Renderer affiche le contenu d’une cellule. Vous pouvez désactiver les barres de défilement et utiliser les méthodes DataGrid pour créer un affichage de mode page. Pour plus d’informations sur la personnalisation, voir la classe DataGridColumn dans le
Guide de référence d’Action Script 3.0
pour Flash Professional
.
Interaction de l’utilisateur avec le composant DataGrid
La souris et le clavier permettent d’interagir avec un composant DataGrid.
Si la propriété
sortableColumns
et la propriété
sortable
de la colonne sont toutes deux réglées sur
true
, un clic sur un titre de colonne entraîne le tri des données sur la base des valeurs de la colonne. Vous pouvez désactiver le tri pour une colonne précise en réglant sa propriété
sortable
sur
false
.
Si la propriété
resizableColumns
est définie sur
true
, vous pouvez redimensionner les colonnes en faisant glisser les séparateurs de colonne dans la ligne d’en-tête.
Si l’utilisateur clique sur une cellule modifiable, cette cellule reçoit le focus. Un clic sur une cellule non modifiable n’a aucun impact sur le focus. Une cellule est modifiable si ses propriétés
DataGrid.editable
et
DataGridColumn.editable
ont la valeur
true
.
Pour plus d’informations, voir les classes DataGrid et DataGridColumn dans le
Guide de référence d’ActionScript 3.0 pour Flash Professional
.
Lorsqu’une occurrence de DataGrid a le focus (l’utilisateur a cliqué ou utilisé la tabulation), les touches suivantes permettent de la contrôler :
Touche
|
Description
|
Flèche vers le bas
|
Lorsque la cellule fait l’objet d’une modification, le point d’insertion se positionne à la fin du texte de la cellule. Si la cellule n’est pas modifiable, la flèche vers le bas gère la sélection de la même façon que le composant List.
|
Flèche vers le haut
|
Lorsque la cellule fait l’objet d’une modification, le point d’insertion se positionne au début du texte de la cellule. Si la cellule n’est pas modifiable, la flèche vers le haut gère la sélection de la même façon que le composant List.
|
Maj+Flèche vers le haut/bas
|
Si le composant DataGrid n’est pas modifiable et si
allowMultipleSelection
a la valeur
true
, les lignes adjacentes sont sélectionnées. L’inversion du sens, à l’aide de la flèche opposée, désélectionne les lignes sélectionnées jusqu’à ce que vous dépassiez la ligne de départ, après quoi les lignes dans cette direction sont sélectionnées.
|
Maj+Clic
|
Si
allowMultipleSelection
a la valeur
true
, toutes les lignes entre la ligne sélectionnée et la position actuelle du signe insertion (cellule mise en surbrillance) sont sélectionnées.
|
Ctrl+Clic
|
Si
allowMultipleSelection
a la valeur
true
, les lignes supplémentaires, qui n’ont pas besoin d’être contiguës, sont sélectionnées.
|
Flèche droite
|
Lorsque la cellule fait l’objet d’une modification, le point d’insertion se déplace d’un caractère vers la droite. Si la cellule n’est pas modifiable, cette action n’a aucune incidence.
|
Flèche gauche
|
Lorsque la cellule fait l’objet d’une modification, le point d’insertion se déplace d’un caractère vers la gauche. Si la cellule n’est pas modifiable, cette action n’a aucune incidence.
|
Orig
|
Sélectionne la première ligne dans le composant DataGrid.
|
Fin
|
Sélectionne la dernière ligne dans le composant DataGrid.
|
PgPréc
|
Sélectionne la première ligne d’une page dans le composant DataGrid. Une page consiste en le nombre de lignes que le composant DataGrid peut afficher sans défilement.
|
PgSuiv
|
Sélectionne la dernière ligne d’une page dans le composant DataGrid. Une page consiste en le nombre de lignes que le composant DataGrid peut afficher sans défilement.
|
Retour/Entrée/Maj+Entrée
|
Lorsque la cellule est modifiable, la modification est validée et le point d’insertion se place dans la cellule de la ligne suivante (vers le haut ou vers le bas, en fonction du sens de basculement) dans la même colonne.
|
Maj+Tab/Tab
|
Si le composant DataGrid est modifiable, déplace le focus vers l’élément précédent/suivant jusqu’à ce que la fin de la colonne soit atteinte, puis vers la ligne précédente/suivante jusqu’à ce que la première ou la dernière cellule soit atteinte. Si la première cellule est sélectionnée, Maj+Tab déplace le focus vers le contrôle précédent. Si la dernière cellule est sélectionnée, Maj+Tab déplace le focus vers le contrôle suivant.
Si le composant DataGrid n’est pas modifiable, déplace le focus vers le contrôle précédent/suivant.
|
Le composant DataGrid peut servir de base à de nombreux types d’applications de données. Vous pouvez aisément afficher une vue tabulaire et formatée des données, mais aussi utiliser les fonctionnalités du composant CellRenderer pour créer des éléments de l’interface utilisateur plus élaborés et modifiables. Voici des exemples concrets d’utilisation du composant DataGrid :
Lorsque vous concevez une application à l’aide du composant DataGrid, il est utile de bien comprendre le design du composant List, car la classe DataGrid étend la classe SelectableList. Pour plus d’informations sur la classe SelectableList et le composant List, voir les classes SelectableList et List dans le
Guide de référence d’ActionScript 3.0 pour Flash Professional
.
Lorsque vous ajoutez un composant DataGrid à une application, vous pouvez le rendre accessible à un lecteur d’écran en ajoutant les lignes de code ActionScript suivantes :
import fl.accessibility.DataGridAccImpl;
DataGridAccImpl.enableAccessibility();
Quel que soit le nombre d’occurrences d’un composant, l’activation de son accessibilité ne se fait qu’une fois. Pour plus d’informations, voir le Chapitre 18, « Création de contenu accessible » du guide
Utilisation de Flash
.
Paramètres du composant DataGrid
Dans l’Inspecteur des propriétés ou l’Inspecteur des composants, vous pouvez définir les paramètres de programmation suivants pour chaque occurrence du composant DataGrid :
allowMultipleSelection
,
editable
,
headerHeight
,
horizontalLineScrollSize
,
horizontalPageScrollSize
,
horizontalScrolllPolicy
,
resizableColumns
,
rowHeight
,
showHeaders
,
verticalLineScrollSize
,
verticalPageScrollSize
et
verticalScrollPolicy
. A chacun de ces paramètres correspond une propriété ActionScript du même nom. Pour plus d’informations sur les valeurs gérées de ces paramètres, voir la classe DataGrid dans le
Guide de référence d’ActionScript 3.0
pour Flash Professional
.
Création d’une application avec le composant DataGrid
Pour créer une application avec le composant DataGrid, commencez par déterminer d’où proviennent vos données. En règle générale, les données proviennent d’un tableau que vous pouvez tirer dans la grille en définissant la propriété
dataProvider
. Vous pouvez également utiliser les méthodes des classes DataGrid et DataGridColumn pour ajouter les données à la grille.
Utilisation d’un fournisseur de données local avec un composant DataGrid
Cet exemple crée un composant DataGrid pour afficher l’effectif d’une équipe sportive. Il définit l’effectif sous la forme d’un tableau (
aRoster
) et l’attribue à la propriété
dataProvider
du composant DataGrid.
-
Dans Flash, choisissez Fichier > Nouveau, puis Fichier Flash (ActionScript 3.0).
-
Faites glisser le composant DataGrid du panneau Composants vers la scène.
-
Dans l’Inspecteur des propriétés, entrez le nom d’occurrence
aDg
.
-
Ouvrez le panneau Actions, sélectionnez l’image 1 dans le scénario principal et entrez le code ActionScript suivant :
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);
};
La fonction
bldRosterGrid()
définit la taille du composant DataGrid, ainsi que l’ordre des colonnes et leurs tailles.
-
Choisissez Contrôle > Tester l’animation.
Définition de colonnes et ajout d’un tri pour un composant DataGrid dans une application
Notez que vous pouvez cliquer sur le titre de n’importe quelle colonne pour trier le contenu du composant DataGrid dans l’ordre décroissant des valeurs de cette colonne.
L’exemple suivant fait appel à la méthode
addColumn()
pour ajouter des occurrences de DataGridColumn à un composant DataGrid. Les colonnes représentent les noms des joueurs et leurs scores. L’exemple règle également la propriété
sortOptions
afin de définir les options de tri pour chaque colonne :
Array.CASEINSENSITIVE
pour la colonne Nom et
Array.NUMERIC
pour la colonne Score. Il définit une taille appropriée pour le composant DataGrid en fixant la longueur au nombre de lignes et la largeur à 200.
-
Dans Flash, choisissez Fichier > Nouveau, puis Fichier Flash (ActionScript 3.0).
-
Faites glisser le composant DataGrid du panneau Composants vers la scène.
-
Dans l’Inspecteur des propriétés, entrez le nom d’occurrence
aDg
.
-
Ouvrez le panneau Actions, sélectionnez l’image 1 dans le scénario principal et entrez le code ActionScript suivant :
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;
-
Choisissez Contrôle > Tester l’animation.
Création d’une occurrence du composant DataGrid à l’aide d’ActionScript
Cet exemple crée un composant DataGrid à l’aide de ActionScript et le remplit d’un tableau contenant les noms et les scores des joueurs.
-
Créez un document de fichier Flash (ActionScript 3.0).
-
Faites glisser le composant DataGrid du panneau Composants vers le panneau Bibliothèque du document en cours.
Cette opération permet d’ajouter le composant à la bibliothèque, mais elle ne permet pas de le rendre visible dans l’application.
-
Ouvrez le panneau Actions, sélectionnez l’image 1 dans le scénario principal et entrez le code ActionScript suivant :
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);
Ce code crée l’occurrence de DataGrid, puis dimensionne et positionne la grille.
-
Créez un tableau, ajoutez-y des données et identifiez-le comme fournisseur de données du composant DataGrid :
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;
-
Choisissez Contrôle > Tester l’animation.
Chargement d’un composant DataGrid avec un fichier XML
L’exemple suivant emploie la classe DataGridColumn pour créer les colonnes du composant DataGrid. Il remplit le composant DataGrid en transmettant un objet XML comme paramètre
value
du constructeur
DataProvider()
.
-
Par le biais d’un éditeur de texte, créez un fichier XML contenant les données suivantes et enregistrez-le sous le nom
team.xml
dans le dossier dans lequel vous enregistrerez le fichier FLA.
<team>
<player name="Player A" avg="0.293" />
<player name="Player B" avg="0.214" />
<player name="Player C" avg="0.317" />
</team>
-
Créez un document de fichier Flash (ActionScript 3.0).
-
Dans le panneau Composants, double-cliquez sur le composant DataGrid pour l’ajouter sur la scène.
-
Dans l’Inspecteur des propriétés, entrez le nom d’occurrence
aDg
.
-
Ouvrez le panneau Actions, sélectionnez l’image 1 dans le scénario principal et entrez le code ActionScript suivant :
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;
}
-
Choisissez Contrôle > Tester l’animation.
|
|
|