Usare il componente DataGrid

Il componente DataGrid consente di visualizzare i dati in una griglia di righe e colonne, caricando i dati da un array oppure da un file XML esterno che può essere convertito in un array per il DataProvider. Il componente DataGrid include lo scorrimento verticale e orizzontale, il supporto degli eventi (compreso il supporto per le celle modificabili) e le capacità di ordinamento.

In una griglia potete ridimensionare e personalizzare caratteristiche come il carattere, il colore e i bordi delle colonne. È possibile usare un clip filmato personalizzato, ad esempio un renderer di celle, per qualsiasi colonna in una griglia. Un renderer di celle visualizza il contenuto di una cella. Potete disattivare le barre di scorrimento e usare i metodi DataGrid per creare una visualizzazione dello stile della vista di una pagina. Per ulteriori informazioni sulla personalizzazione, vedete la classe DataGridColumn nella Guida di riferimento di ActionScript 3.0 per Flash Professional .

Interazione dell'utente con il componente DataGrid

È possibile usare il mouse e la tastiera per interagire con un componente DataGrid.

Se le proprietà sortableColumnse e sortable della colonna hanno entrambe il valore true e fate clic su un'intestazione di colonna, i dati vengono ordinati in base ai valori della colonna. Potete disattivare l'ordinamento per una singola colonna impostando la relativa proprietà sortable su false .

Se il valore della proprietà resizableColumns è true , potete ridimensionare le colonne trascinando i relativi divisori nella riga di intestazione.

Se fate clic su una cella modificabile, questa viene attivata; se fate clic su una cella non modificabile, non ottenete alcun effetto. Una singola cella è modificabile quando entrambe le proprietà DataGrid.editable e DataGridColumn.editable hanno valore true .

Per ulteriori informazioni, vedete le classi DataGrid e DataGridColumn nella Guida di riferimento di ActionScript 3.0 .

Quando un'istanza DataGrid viene attivata facendo clic con il mouse o premendo il tasto Tab, è possibile utilizzare i tasti seguenti per controllarla:

Chiave

Descrizione

Freccia giù

Quando è in corso la modifica di una cella, il punto di inserimento si sposta alla fine del testo della cella. Se una cella non è modificabile, il tasto Freccia giù gestisce la selezione nello stesso modo del componente List.

Freccia su

Quando è in corso la modifica di una cella, il punto di inserimento si sposta all'inizio del testo della cella. Se una cella non è modificabile, il tasto Freccia su gestisce la selezione nello stesso modo del componente List.

Maiusc+Freccia su/giù

Se il componente DataGrid non è modificabile e il valore di allowMultipleSelection è true , vengono selezionate righe contigue. L'inversione della direzione con la freccia opposta deseleziona le righe selezionate, finché non si oltrepassa la riga iniziale; a quel punto vengono selezionate le righe in quella direzione.

Maiusc+Clic

Se allowMultipleSelection è true , vengono selezionate tutte le righe tra la riga selezionata e la posizione corrente del cursore (la cella evidenziata).

Ctrl+Clic

Se allowMultipleSelection è true , vengono selezionate righe aggiuntive, non necessariamente contigue.

Freccia destra

Quando è in corso la modifica di una cella, il punto di inserimento si sposta di un carattere a destra. Se una cella non è modificabile, il tasto Freccia destra non esegue alcuna operazione.

Freccia sinistra

Quando è in corso la modifica di una cella, il punto di inserimento si sposta di un carattere a sinistra. Se una cella non è modificabile, il tasto Freccia sinistra non esegue alcuna operazione.

Home

Seleziona la prima riga nel componente DataGrid.

Fine

Seleziona l'ultima riga nel componente DataGrid.

Pag su

Seleziona la prima riga in una pagina del componente DataGrid. Una pagina è costituita dal numero di righe che il componente DataGrid è in grado di visualizzare senza scorrimento.

Pag giù

Seleziona l'ultima riga in una pagina del componente DataGrid. Una pagina è costituita dal numero di righe che il componente DataGrid è in grado di visualizzare senza scorrimento.

A capo/Invio/Maiusc+Invio

Quando una cella è modificabile, viene eseguito il commit della modifica e il punto di inserimento viene spostato sulla cella della stessa colonna, sulla riga successiva (su o giù, a seconda dell'uso o meno del tasto Maiusc).

Maiusc+Tab/Tab

Se il componente DataGrid è modificabile, l'attivazione si sposta alla voce precedente/successiva finché non viene raggiunta la fine della colonna, quindi alla riga precedente/successiva finché non viene raggiunta la prima o l'ultima cella. Se è selezionata la prima cella, premendo Maiusc+Tab l'attivazione si sposta al controllo precedente. Se è selezionata l'ultima cella, premendo Tab l'attivazione si sposta al controllo successivo.

Se il componente DataGrid non è modificabile, l'attivazione si sposta al controllo precedente/successivo.

Il componente DataGrid può essere utilizzato come base per numerosi tipi di applicazioni basate sui dati. Potete visualizzare facilmente una vista in formato tabella dei dati, ma anche usare le funzioni del renderer di celle per costruire elementi più sofisticati e modificabili dell'interfaccia utente. Alcuni usi pratici del componente DataGrid sono i seguenti:

  • Un client webmail

  • Pagine dei risultati delle ricerche

  • Applicazioni per fogli di calcolo, ad esempio per il calcolo delle rate di un prestito e per i moduli fiscali

Quando progettate un'applicazione con il componente DataGrid, è utile conoscere la struttura del componente List, in quanto la classe DataGrid estende la classe SelectableList. Per ulteriori informazioni sulla classe SelectableList e il componente List, vedete le classi SelectableList e List classes nella Guida di riferimento di ActionScript 3.0 .

Quando aggiungete un componente DataGrid all'applicazione, potete renderlo accessibile a uno screen reader aggiungendo le seguenti righe di codice ActionScript:

import fl.accessibility.DataGridAccImpl; 
DataGridAccImpl.enableAccessibility();

Attivare l'accessibilità per il componente una sola volta, indipendentemente dal numero di istanze del componente. Per ulteriori informazioni, vedete il Capitolo 18, “Creazione di contenuto accessibile”, nella guida Uso di Flash .

Parametri del componente DataGrid

Per ogni istanza del componente DataGrid potete impostare i seguenti parametri di creazione nella finestra di ispezione Proprietà o nella finestra di ispezione dei componenti: allowMultipleSelection , editable , headerHeight , horizontalLineScrollSize , horizontalPageScrollSize , horizontalScrolllPolicy , resizableColumns , rowHeight , showHeaders , verticalLineScrollSize , verticalPageScrollSize e verticalScrollPolicy . Ciascuno di questi parametri ha una proprietà ActionScript corrispondente con lo stesso nome. Per informazioni sui valori che potete impostare per questi parametri, vedete la classe DataGrid nella Guida di riferimento di ActionScript 3.0 per Flash Professional .

Creare un'applicazione con il componente DataGrid

Per creare un'applicazione con il componente DataGrid, è necessario per prima cosa determinare da dove provengono i dati. I dati provengono solitamente da un Array e possono essere inseriti in una griglia mediante l'impostazione della proprietà dataProvider . Potete inoltre usare i metodi delle classi DataGrid e DataGridColumn per aggiungere i dati alla griglia.

Usare un fornitore di dati locale con un componente DataGrid:

Nell'esempio viene creato un componente DataGrid per visualizzare la lista dei giocatori di una squadra di softball. La lista viene definita in un Array ( aRoster ) che viene assegnato alla proprietà dataProvider di DataGrid.

  1. In Flash, selezionate File > Nuovo, quindi selezionate File Flash (ActionScript 3.0).

  2. Trascinate il componente DataGrid dal pannello Componenti allo stage.

  3. Nella finestra di ispezione Proprietà, inserite aDg come nome di istanza.

  4. Aprite il pannello Azioni, selezionate il fotogramma 1 nella linea temporale principale, quindi immettete il codice ActionScript seguente:

    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 funzione bldRosterGrid() imposta le dimensioni del componente DataGrid e definisce l'ordine delle colonne e le relative dimensioni.

  5. Selezionare Controllo > Prova filmato.

Specificare le colonne e aggiungere l'ordinamento di un componente DataGrid in un'applicazione

Potete fare clic sull'intestazione di una colonna per ordinare il contenuto del componente in ordine decrescente in base ai valori di tale colonna.

Nell'esempio seguente viene usato il metodo addColumn() per aggiungere le istanze DataGridColumn a un componente DataGrid. Le colonne rappresentano i nomi dei giocatori e i relativi punteggi. Nell'esempio viene anche impostata la proprietà sortOptions per specificare le opzioni di ordinamento per ciascuna colonna: Array.CASEINSENSITIVE per la colonna Name e Array.NUMERIC per la colonna Score. Le dimensioni di DataGrid vengono definite nel modo appropriato impostando la lunghezza in base al numero di colonne e la larghezza su 200.

  1. In Flash, selezionate File > Nuovo, quindi selezionate File Flash (ActionScript 3.0).

  2. Trascinate il componente DataGrid dal pannello Componenti allo stage.

  3. Nella finestra di ispezione Proprietà, inserite aDg come nome di istanza.

  4. Aprite il pannello Azioni, selezionate il fotogramma 1 nella linea temporale principale, quindi immettete il codice ActionScript seguente:

    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. Selezionare Controllo > Prova filmato.

Creare l'istanza di un componente DataGrid mediante ActionScript

Nell'esempio seguente viene creato un componente DataGrid mediante ActionScript che viene compilato con un Array di nomi di giocatori e punteggi.

  1. Create un nuovo documento Flash (ActionScript 3.0).

  2. Trascinate il componente DataGrid dal pannello Componenti al pannello Libreria del documento corrente.

    In questo modo, il componente viene aggiunto alla libreria, ma non è visibile nel documento.

  3. Aprite il pannello Azioni, selezionate il fotogramma 1 nella linea temporale principale, quindi immettete il codice ActionScript seguente:

    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);

    Questo codice crea l'istanza DataGrid, quindi ridimensiona e posiziona la griglia.

  4. Create un array, aggiungete i dati e identificate l'array come fornitore di dati per il componente 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. Selezionare Controllo > Prova filmato.

Caricare un file XML in un componente DataGrid

Nell'esempio seguente viene usata la classe DataGridColumn per creare le colonne del componente DataGrid, che viene compilato passando un oggetto XML come parametro value della funzione di costruzione DataProvider() .

  1. L'uso di un editor di testo crea un file XML con i seguenti dati e lo salva come team.xml nella stessa cartella in cui verrà salvato il file 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. Create un nuovo documento Flash (ActionScript 3.0).

  3. Nel pannello Componenti, fare doppio clic sul componente DataGrid per aggiungerlo allo stage.

  4. Nella finestra di ispezione Proprietà, inserite aDg come nome di istanza.

  5. Aprite il pannello Azioni, selezionate il fotogramma 1 nella linea temporale principale, quindi immettete il codice ActionScript seguente:

    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. Selezionare Controllo > Prova filmato.