Grid Básico - bjverde/formDin GitHub Wiki

Esse capitulo explica um dos componentes mais importantes do formDin.

O Grid é utilizado para mostra os resultados de uma determinada consulta. O Grid básico tem como características

  • dados ordenados via coluna
  • ações padrão alterar e excluir registro
  • exportar dados para planilha no formato .XLS
  • não limita quantidade de linha

Grid

Incrementando a Primeira Aplicação

Edite o arquivo modulos/pedido.php e cole o conteúdo. As 4 primeiras linhas serão explicadas com detalhes em outro capitulo. No momento só precisa entender que serva para criar o formulário.

<?php

d($_REQUEST);
$frm = new TForm('Cadastro de Pedidos');
$frm->setFlat(true);
$frm->setMaximize(true);


$dados = Tb_pedidoDAO::selectAll();
$PK = 'ID_PEDIDO';
$gride = new TGrid('gdTeste' // id do gride
                  ,'Lista de Pedidos' // titulo do gride
                  , $dados   // array de dados
                  , null     // altura do gride
                  , null     // largura do gride
                  , $PK);    // chave primaria
        
$gride->addColumn($PK, 'id Pedido');
$gride->addColumn('NOME_COMPRADOR','Nome do Comprodor');
$gride->addColumn('DATA_PEDIDO', 'Data');
$gride->addColumn('FORMA_PAGAMENTO', 'Pagamento');

$frm->addHtmlField('gride', $gride);
    

$frm->show();
?>

O trecho abaixo retorna os dados que serão mostrados no grid.

$dados = Tb_pedidoDAO::selectAll();

Logo depois é criado o grid.

$PK = 'ID_PEDIDO';
$gride = new TGrid('gdTeste' // id do gride
                  ,'Lista de Pedidos' // titulo do gride
                  , $dados   // array de dados
                  , null     // altura do gride
                  , null     // largura do gride
                  , $PK);    // chave primaria

Para cada coluna que deseja mostrar deve fazer uma relação entre a chave do array e nome que deseja mostrar.

$gride->addColumn($PK, 'id Pedido');
$gride->addColumn('NOME_COMPRADOR','Nome do Comprodor');
$gride->addColumn('DATA_PEDIDO', 'Data');
$gride->addColumn('FORMA_PAGAMENTO', 'Pagamento');

Serve para criar um campo HTML que será preenchido com o conteúdo HTML do grid.

$frm->addHtmlField('gride', $gride);

Serve para mostrar o formulário

$frm->show();

Dados legíveis !!

Repare nos dados do grid abaixo ! A coluna forma de pagamento não é legível para os usuários, pois aparece apenas a FK que faz referencia a tabela tb_forma_pagamento.

Grid

Nessa situação para torna os dados mais legíveis as opções são:

  • criar uma view
  • fazer sub selects

Reveja Dicas para modelar o banco de dados

Altere a variável $sqlBasicSelect do arquivo DAO/Tb_pedidoDAO.class.php para o exemplo abaixo

private static $sqlBasicSelect = 'select
				  id_pedido
				 ,data_pedido
				 ,nome_comprador
				 ,forma_pagamento
				 ,(select descricao from tb_forma_pagamento as fp 
				   where fp.idform_pagamento = forma_pagamento) as forma_pagamento_nome
				 from tb_pedido ';

Altere o arquivo modulos/pedido.php de :

$gride->addColumn('FORMA_PAGAMENTO', 'Pagamento');
$gride->addColumn('FORMA_PAGAMENTO_NOME', 'Pagamento');

O resultado será Grid

Explicando cada parâmetro da classe TGrid

Abaixo copia da documentação do construtor da classe TGrid

/**
 * @param string $strName          - 1: ID do campo
 * @param string $strTitle         - 2: Titulo do campo
 * @param array $mixData           - 3: Array Data
 * @param mixed $strHeight         - 4: Altura 
 * @param mixed $strWidth          - 5: Largura
 * @param mixed $strKeyField       - 6: Chave primaria
 * @param array $mixUpdateFields   - 7: Campos do form origem que serão atualizados ao selecionar o item desejado. Separados por virgulas seguindo o padrão <campo_tabela> | <campo_formulario> , <campo_tabela> | <campo_formulario>
 * @param mixed $intMaxRows        - 8: Qtd Max de linhas
 * @param mixed $strRequestUrl     - 9: Url request do form
 **/

Explicando o método addColumn

    /**
     * Coluna normal para o grid
     * @param string $strFieldName 1: ID da coluna = Nome da coluna da tabela
     * @param string $strValue     2: Nome do Label que irá aparecer 
     * @param integer $strWidth    3: tamanho da coluna
     * @param string $strTextAlign 4: Alinhamento do texto left|right|center|justify
     * @return TGridColumn
     */

Próxima etapa ?

11 - Componentes Básicos