Utilisation du composant DataGrid

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 :

  • Client de messagerie Web

  • Pages de résultats de recherches

  • Tableurs (applications de calculs de crédits et de formulaires de déclaration d’impôt)

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.

  1. Dans Flash, choisissez Fichier > Nouveau, puis Fichier Flash (ActionScript 3.0).

  2. Faites glisser le composant DataGrid du panneau Composants vers la scène.

  3. Dans l’Inspecteur des propriétés, entrez le nom d’occurrence aDg .

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

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

  1. Dans Flash, choisissez Fichier > Nouveau, puis Fichier Flash (ActionScript 3.0).

  2. Faites glisser le composant DataGrid du panneau Composants vers la scène.

  3. Dans l’Inspecteur des propriétés, entrez le nom d’occurrence aDg .

  4. 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;
  5. 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.

  1. Créez un document de fichier Flash (ActionScript 3.0).

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

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

  4. 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;
  5. 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() .

  1. 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>
  2. Créez un document de fichier Flash (ActionScript 3.0).

  3. Dans le panneau Composants, double-cliquez sur le composant DataGrid pour l’ajouter sur la scène.

  4. Dans l’Inspecteur des propriétés, entrez le nom d’occurrence aDg .

  5. 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; 
    }
  6. Choisissez Contrôle > Tester l’animation.