Använda komponenten DataGrid

Med komponenten DataGrid kan du visa data i ett rutnät med rader och kolumner och hämta data från en array eller extern XML-fil, som du kan tolka till en array för DataProvider. DataGrid-komponenten innehåller lodrät och vågrät rullningen, händelsestöd (inklusive stöd för redigerbara celler) och sorteringsfunktioner.

Du kan ändra storlek på och anpassa egenskaper som teckensnitt, färg och kantlinjer för kolumnerna i ett rutnät. Du kan använda ett anpassat filmklipp som cellrenderare för alla kolumner i ett rutnät. (En cellrenderare visar innehållet i en cell.) Du kan stänga av rullningslister och använda DataGrid-metoderna för att skapa en stilvisning i sidovy. Mer information om anpassning finns i klassen DataGridColumn i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .

Använda komponenten DataGrid

Använd musen eller tangentbordet när du vill interagera med en DataGrid-komponent.

Om egenskapen sortableColumns och kolumnens egenskap sortable båda är true , sorteras data baserat på kolumnens värden när du klickar på en kolumnrubrik. Du kan inaktivera sorteringen av en enskild kolumn genom att ställa in dess sortable -egenskap till false .

Om egenskapen resizableColumns är true kan du ändra storlek på kolumner genom att dra kolumnavgränsarna i rubrikraden.

Om du klickar i en redigerbar cell får cellen fokus. Om du klickar i en cell som inte är redigerbar har det ingen effekt på fokus. En enskild cell är redigerbar när både egenskapen DataGrid.editable och egenskapen DataGridColumn.editable för cellen är true .

Mer information finns i klasserna DataGrid och DataGridColumn i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .

När en DataGrid-förekomst får fokus, antingen via klickning eller tabbning, använder du följande tangenter för att styra den:

Nyckel

Beskrivning

Nedpilen

När en cell redigeras flyttas insättningspunkten till slutet av cellens text. Om cellen inte är redigerbar hanterar nedpiltangenten markeringen som List-komponenten gör.

Uppilen

När en cell redigeras flyttas insättningspunkten till början av cellens text. Om cellen inte är redigerbar hanterar uppiltangenten markeringen som List-komponenten gör.

Skift+uppil/nedpil

Om DataGrid inte är redigerbart och allowMultipleSelection är true markeras på varandra följande rader. Om du går i motsatt riktning med motsatt pil avmarkeras de markerade raderna till du passerar den startraden. Sedan markeras raderna i den riktningen.

Skift+klick

Om allowMultipleSelection är true markeras alla rader mellan den markerade raden och den aktuella inmatningspunkten (markad cell).

Ctrl+klick

Om allowMultipleSelection är true markeras ytterligare rader, som inte behöver följa direkt efter varandra.

Högerpil

När en cell redigeras flytts insättningspunkten ett tecken åt höger. Om en cell inte är redigerbar händer ingenting.

Vänsterpil

När en cell redigeras flytts insättningspunkten ett tecken åt vänster. Om en cell inte är redigerbar händer ingenting.

Hem

Markerar den första raden i DataGrid.

End

Markerar den sista raden i DataGrid.

PageUp

Markerar den första raden på en sida i DataGrid. En sida består av antalet rader som DataGrid kan visa utan att du behöver rulla.

PageDown

Markerar den sista raden på en sida i DataGrid. En sida består av antalet rader som DataGrid kan visa utan att du behöver rulla.

Retur/Enter/Skift+Enter

När en cell är redigerbar utförs ändringen och insättningspunkten flyttas till cellen i samma kolumn på nästa rad (uppåt eller nedåt, beroende på vilket läge Skift har).

Skift+tabbtangent/tabbtangent

Om DataGrid är redigerbart flytts fokus till föregående/nästa objekt tills du når kolumnens slut, och sedan till föregående/näst rad till du när den första eller sista cellen. Om den första cellen är markerad flyttar Skift+tabbtangent fokus till den föregående kontrollen. Den den sista cellen är markerad flyttar tabbtangenten fokus till nästa kontroll.

Om DataGrid inte är redigerbart flyttas fokus till föregående/nästa kontroll.

Du kan använda DataGrid-komponenten som bas för olika typer av datadrivna program. Det är enkelt att visa en formaterad tabellvy med data, men du kan också använda cellrenderaren för att bygga mer sofistikerade och redigerbara delar av användargränssnitt. Nedan anges några praktiska användningsområden för DataGrid-komponenten:

  • En webbmail-klient

  • Sökresultatsidor

  • Kalkylbladsprogram, till exempel låneräknare och skatteformulärsprogram

När du utformar ett program med DataGrid-komponenten kan det vara till hjälp att förstå hur List-komponenten är utformad, eftersom DataGrid-klassen utökar klassen SelectableList. Mer information om klassen SelectableList och komponenten List finns i klasserna SelectableList och List i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .

När du lägger till en DataGrid-komponent i ett program kan du göra den åtkomlig för en skärmläsare genom att lägga till följande rader med ActionScript-kod:

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

Du aktiverar bara en komponents åtkomlighet en gång, oavsett hur många förekomster komponenten har. Mer information finns i kapitel 18, "Skapa åtkomligt innehåll" i Använda Flash .

DataGrid-komponentparametrar

Du kan ställa in följande utvecklingsparametrar i egenskapsinspektören eller komponentinspektören för varje förekomst av DataGrid-komponenten: allowMultipleSelection , editable , headerHeight , horizontalLineScrollSize , horizontalPageScrollSize , horizontalScrolllPolicy , resizableColumns , rowHeight , showHeaders , verticalLineScrollSize , verticalPageScrollSize och verticalScrollPolicy . Var och en av de här parametrarna har en motsvarande ActionScript-egenskap med samma namn. Information om möjliga värden på de här parametrarna finns i avsnittet om klassen DataGrid i Referenshandbok för ActionScript 3.0 i Adobe Flash Professional .

Skapa ett program med komponenten DataGrid

Om du vill skapa ett program med DataGrid-komponenten måste du först bestämma var dina data kommer från. Vanligtvis kommer data från en Array som du kan dra in i rutnätet genom att ange egenskapen dataProvider . Du kan också använda metoderna i klasserna DataGrid och DataGridColumn för att lägga till data i rutnätet.

Använda en lokal DataProvider med en DataGrid-komponent:

I det här exemplet skapas en DataGrid som visar ett fotbollslags spelarlista (roster). Spelarlistan (roster) definieras i en Array ( aRoster ) som tilldelas DataGridens dataProvider -egenskap.

  1. I Flash väljer du först Arkiv > Ny och sedan Flash File (ActionScript 3.0).

  2. Dra en DataGrid-komponent från panelen Komponenter till scenen.

  3. Ange förekomstnamnet aDg i egenskapsinspektören.

  4. Öppna åtgärdspanelen, markera bildruta 1 i huvudtidslinjen och ange följande ActionScript-kod:

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

    Funktionen bldRosterGrid() anger storleken på DataGrid samt ordningen på kolumnerna och deras storlek.

  5. Välj Kontroll > Testa filmen.

Ange kolumner och lägg till sortering för en DataGrid-komponent i ett program

Observera att du kan klicka på vilken kolumnrubrik som helst för att sortera DataGrid-innehållet i fallande ordning efter kolumnens värden.

I följande exempel används metoden addColumn() för att lägga till DataGridColumn-förekomster i en DataGrid. Kolumnerna representerar spelarnamn och deras resultat. I exemplet anges också egenskapen sortOptions för att specificera sorteringsalternativen för varje kolumn: Array.CASEINSENSITIVE för namnkolumnen och Array.NUMERIC för resultatkolumnen. Storleken på DataGrid ändras genom att längden ställs in till antalet rader och bredden till 200.

  1. I Flash väljer du först Arkiv > Ny och sedan Flash File (ActionScript 3.0).

  2. Dra en DataGrid-komponent från panelen Komponenter till scenen.

  3. Ange förekomstnamnet aDg i egenskapsinspektören.

  4. Öppna åtgärdspanelen, markera bildruta 1 i huvudtidslinjen och ange följande ActionScript-kod:

    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. Välj Kontroll > Testa filmen.

Skapa en förekomst av en DataGrid-komponent med ActionScript

I det här exemplet skapas en DataGrid med ActionScript som fylls i med en Array med spelarnamn och resultat.

  1. Skapa ett nytt Flash-dokument (ActionScript 3.0).

  2. Dra DataGrid-komponenten från panelen Komponenter till det aktuella dokumentets bibliotekspanel.

    Komponenten läggs till i biblioteket, men den syns inte i programmet.

  3. Öppna åtgärdspanelen, markera bildruta 1 i huvudtidslinjen och ange följande ActionScript-kod:

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

    Den här koden skapar DataGrid-förekomsten och ändrar sedan storlek på och placerar rutnätet.

  4. Skapa en array, lägga till data i arrayen och identifiera arrayen som DataProvider för 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. Välj Kontroll > Testa filmen.

Läsa in en DataGrid med en XML-fil

I följande exempel används klassen DataGridColumn för att skapa DataGrid-kolumner. DataGrid fylls i genom att ett XML-objekt skickas som value -parametern för DataProvider() -konstruktorn.

  1. Använd en textredigerare för att skapa en XML-fil med följande data och spara den som team.xml i samma mapp som du tänker spara FLA-fil.

    <team> 
        <player name="Player A" avg="0.293" /> 
        <player name="Player B" avg="0.214" /> 
        <player name="Player C" avg="0.317" /> 
    </team>
  2. Skapa ett nytt Flash-dokument (ActionScript 3.0).

  3. I panelen Komponenter dubbelklickar du på komponenten DataGrid för att lägg till den på scenen.

  4. Ange förekomstnamnet aDg i egenskapsinspektören.

  5. Öppna åtgärdspanelen, markera bildruta 1 i huvudtidslinjen och ange följande ActionScript-kod:

    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. Välj Kontroll > Testa filmen.