Uso do componente DataGrid

O componente DataGrid permite exibir os dados em linhas e colunas, extraindo os dados de um array ou de um arquivo XML externo que pode ser inserido em uma array do DataProvider. O componente DataGrid inclui rolagem vertical e horizontal, suporte a eventos (incluindo suporte a células editáveis) e recursos de classificação.

Você pode redimensionar e personalizar características como a fonte, a cor e as bordas das colunas em uma grade. Use um clipe de filme personalizado como um renderizador de célula para qualquer coluna em uma grade. (Um renderizador de célula exibe o conteúdo de uma célula.) É possível desativar as barras de rolagem e usar os métodos DataGrid para criar uma exibição de estilo de visualização de página. Para obter mais informações sobre personalização, consulte a classe DataGridColumn na Referência do ActionScript 3.0 para Flash Professional .

Interação do usuário com o componente DataGrid

Você pode usar o mouse e o teclado para interagir com um componente DataGrid.

Se a propriedade sortableColumns e a propriedade sortable da coluna forem true , e você clicar em um cabeçalho, os dados serão classificados com base nos valores da coluna. Você pode desativar a classificação de uma coluna individual definindo sua propriedade sortable como false .

Se a propriedade resizableColumns for true , você poderá redimensionar as colunas arrastando os divisores de coluna na linha do cabeçalho.

Se você clicar em uma célula editável, o foco ficará nessa célula; se você clicar em uma célula não-editável, o focus não será afetado. Uma célula é editável quando as propriedades DataGrid.editable e DataGridColumn.editable da célula são true .

Para obter mais informações, consulte as classes DataGrid e DataGridColumn na Referência do ActionScript® 3.0 para Adobe Flash® Professional CS5 .

Quando uma ocorrência de DataGrid receber o foco após um clique ou o pressionamento da tecla tab, você poderá usar as seguintes teclas para controlá-la:

Tecla

Descrição

Seta para baixo

Quando uma célula está sendo editada, o ponto de inserção é deslocado para o final do texto da célula. Se uma célula não for editável, a tecla de seta para baixo manipulará a seleção da mesma maneira que o componente List.

Seta para cima

Quando uma célula está sendo editada, o ponto de inserção é deslocado para o início do texto da célula. Se uma célula não for editável, a tecla de seta para cima manipulará a seleção da mesma maneira que o componente List.

Shift+Up/Seta para cima

Se a DataGrid não for editável e allowMultipleSelection for true , selecionará linhas contíguas. A reversão da direção com a seta oposta desmarca as linhas selecionadas até que você passe para a linha inicial, na qual as linhas dessa direção são selecionadas.

Shift+Click

Se allowMultipleSelection for true , selecionará todas as linhas entre a linhas selecionada e a posição atual do circunflexo (célula realçada).

Ctrl+Click

Se allowMultipleSelection for true , selecionará linhas adicionais, que não precisam ser contíguas.

Seta para direita

Quando uma célula está sendo editada, o ponto de inserção é deslocado um caractere para a direita. Se uma célula não for editável, a tecla de seta para direita não terá efeito nenhum.

Seta para esquerda

Quando uma célula está sendo editada, o ponto de inserção é deslocado um caractere para a esquerda. Se uma célula não for editável, a tecla de seta para esquerda não terá efeito nenhum.

Início

Seleciona a primeira linha da DataGrid.

End

Seleciona a última linha da DataGrid.

PageUp

Seleciona a primeira linha em uma página da DataGrid. Uma página consiste no número de linhas que a DataGrid pode exibir sem rolagem.

PageDown

Seleciona a última linha em uma página da DataGrid. Uma página consiste no número de linhas que a DataGrid pode exibir sem rolagem.

Return/Enter/Shift+Enter

Quando uma célula é editável, a alteração é confirmada e o ponto de inserção é movido para a célula na mesma coluna, na linha seguinte (para cima ou para baixo, dependendo da alternância do deslocamento).

Shift+Tab/Tab

Se a DataGrid for editável, o foco será movido para o item anterior/seguinte até que o final da coluna seja atingido, e depois para a linha anterior/seguinte até que a primeira ou última célula seja atingida. Se a primeira célula for selecionada, Shift+Tab moverá o foco para o controle anterior. Se a última célula for selecionada, a tecla Tab moverá o foco para o controle seguinte.

Se a DataGrid não for editável, o foco será movido para o controle anterior/seguinte.

Você pode usar o componente DataGrid como base para diversos tipos de aplicativos orientados a dados. É possível exibir facilmente uma visualização tabular dos dados, mas também é possível usar os recursos de renderizador de célula para criar partes mais sofisticadas e editáveis da interface do usuário. Estas são formas práticas de usar o componente DataGrid:

  • Um cliente de webmail

  • Páginas de resultados de pesquisa

  • Aplicativos de planilha, como calculadoras de empréstimo e aplicativos de formulário de imposto

Quando você criar um aplicativo com o componente DataGrid, ele será útil para a compreensão do design do componente List, pois a classe DataGrid estende a classe SelectableList. Para obter mais informações sobre a classe SelectableList e o componente List, consulte as classes SelectableList e List na Referência do ActionScript® 3.0 para Adobe Flash® Professional CS5 .

Quando você adicionar um componente DataGrid a um aplicativo, poderá torná-lo acessível a um leitor de tela adicionando as seguintes linhas do código do ActionScript:

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

A acessibilidade de um componente é ativada somente uma vez, independentemente de quantas ocorrências o componente tem. Para obter mais informações, consulte o Capítulo 18, “Criação de conteúdo acessível”, em Uso do Flash .

Parâmetros do componente DataGrid

Você pode definir os seguintes parâmetros de criação no Inspetor de propriedades ou no Inspetor de componentes para cada ocorrência de DataGrid: allowMultipleSelection , editable , headerHeight , horizontalLineScrollSize , horizontalPageScrollSize , horizontalScrolllPolicy , resizableColumns , rowHeight , showHeaders , verticalLineScrollSize , verticalPageScrollSize e verticalScrollPolicy . Cada um desses parâmetros tem uma propriedade ActionScript correspondente de mesmo nome. Para obter informações sobre os possíveis valores desses parâmetros, consulte a classe DataGrid na Referência do ActionScript 3.0 para Flash Professional .

Criar um aplicativo com o componente DataGrid

Para criar um aplicativo com o componente DataGrid, você deve primeiro descobrir o local de origem dos dados. Geralmente, os dados vêm de uma matriz, que você pode puxar para a grade definindo a propriedade dataProvider . Você também pode usar os métodos das classes DataGrid e DataGridColumn para adicionar dados à grade.

Use um provedor de dados local com um componente DataGrid:

Este exemplo cria a DataGrid para exibir a lista de uma equipe de beisebol. Ele define a lista em uma matriz ( aRoster ) e a atribui à propriedade dataProvider da DataGrid.

  1. No Flash, selecione Arquivo > Novo e selecione Arquivo Flash (ActionScript 3.0).

  2. Arraste o componente DataGrid do painel Componentes para o Palco.

  3. No Inspetor de propriedades, digite o nome de ocorrência aDg .

  4. Abra o painel Ações, selecione Quadro 1 na Linha do tempo principal e digite o seguinte código do ActionScript:

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

    A função bldRosterGrid() define o tamanho da DataGrid e define a ordem das colunas e seus respectivos tamanhos.

  5. Selecione Controlar > Testar filme.

Especificação de colunas e adição de classificação para um componente DataGrid em um aplicativo

Observe que você pode clicar em qualquer cabeçalho de coluna para classificar o conteúdo da DataGrid em ordem decrescente pelos valores dessa coluna.

O exemplo a seguir usa o método addColumn() para adicionar instâncias de DataGridColumn a DataGrid. As colunas representam nomes de jogador e suas pontuações. O exemplo também define a propriedade sortOptions para especificar as opções de classificação de cada coluna: Array.CASEINSENSITIVE para a coluna Nome e Array.NUMERIC para a coluna Pontuação. Ele dimensiona a DataGrid corretamente definindo o tamanho para o número de linhas e a largura para 200.

  1. No Flash, selecione Arquivo > Novo e selecione Arquivo Flash (ActionScript 3.0).

  2. Arraste o componente DataGrid do painel Componentes para o Palco.

  3. No Inspetor de propriedades, digite o nome de ocorrência aDg .

  4. Abra o painel Ações, selecione Quadro 1 na Linha do tempo principal e digite o seguinte código do ActionScript:

    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. Selecione Controlar > Testar filme.

Criar uma ocorrência de componente DataGrid usando o ActionScript

Este exemplo cria uma DataGrid usando o ActionScript e a preenche com uma matriz de nomes de jogador e pontuações.

  1. Crie um novo documento Flash (ActionScript 3.0).

  2. Arraste o componente DataGrid do painel Componentes para o painel Biblioteca do documento atual.

    Esse procedimento adicionará o componente à biblioteca, mas ele não ficará visível no aplicativo.

  3. Abra o painel Ações, selecione Quadro 1 na Linha do tempo principal e digite o seguinte código do ActionScript:

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

    Esse código cria a ocorrência de DataGrid e, em seguida, dimensiona e posiciona a grade.

  4. Crie uma matriz, adicione dados a ela e identifique a matriz como provedor de dados da 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. Selecione Controlar > Testar filme.

Carregar uma DataGrid com um arquivo XML

O exemplo a seguir usa a classe DataGridColumn para criar as colunas da DataGrid. Ele preenche a DataGrid passando um objeto XML como parâmetro value do construtor DataProvider() .

  1. Utilize um editor de texto para criar um arquivo XML com os dados a seguir e salve-o com o nome e team.xml na mesma pasta onde você salvou o arquivo 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. Crie um novo documento Flash (ActionScript 3.0).

  3. No painel Componentes, clique duas vezes no componente DataGrid para adicioná-lo ao Palco.

  4. No Inspetor de propriedades, digite o nome de ocorrência aDg .

  5. Abra o painel Ações, selecione Quadro 1 na Linha do tempo principal e digite o seguinte código do ActionScript:

    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. Selecione Controlar > Testar filme.