Ir para o conteúdo

 Voltar a Fórum do For...
Tela cheia

Dúvida Grid OffLine

1 de Junho de 2012, 17:16 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 3 vezes

Eu estou desenvolvendo um formulário com uma Grid Offline, e me deparei com o seguinte problema: estou querendo alinhar as colunas da gride centralizadas e alterar o tamanho de algumas colunas. Tem como fazer isso, pois eu estou tentando de algumas formas e não consegui.

[]s

Eduardo Cajueiro 

Autor: Eduardo Cajueiro


66 comentários

  • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
    3 de Junho de 2012, 19:02

     

    Caro Eduardo,
    tem sim. A Classe TGrid oferece a possibilidade de adicionarmos alguns eventos para que possamos fazer algumas configurações durante sua construção. Veja no arquivo /base/classes/webform/TGrid.class.php a relação de todos.

    No seu caso você terá que utilizar o evento onDrawHeaderCell para definir a largura e o alinhamento da coluna quando esta for construída.

    Utilizando o codigo do arquivo /base/exemplos/exe_gride_3_dados.php fiz a seguinte alteração para aumentar a coluna "Moeda" para 250px e alinhamento para "center".

    O evento onDrawHeaderCell recebe 3 parametros:
    1) a instância do objeto th ( Table Head) do cabecalho
    2) a instância do objeto TGridColumn
    3) a instância do objeto Header.

    Vamos precisar utilzar somente os 2 últimos. O objeto TGridColumn vai nos dizer qual é a coluna e o objeto Header vai receber a nova largura.

    Para adicionar o evento ao gride utilize o seguinte comando:
    $grid->setOnDrawHeaderCell('minhaFuncao');

    // a variável $grid é a sua instância da classe TGrid.

    e depois do comando $grid->show();

    vamos programar a funcao "minha_funcao".

    function minha_funcao( $objTh, $objCol, $objHead )
    {
    if( $objCol->getFieldName() == 'NOM_MOEDA')
    {
    $objHead->setCss('width','250px');
    $objCol->setTextAlign('center');
    }
    }

    Abraço.

    • 46341e312d924239404ac442f5c43ed3?only path=false&size=50&d=404Eduardo Cajueiro(usuário não autenticado)
      4 de Junho de 2012, 10:01

       

      Funcionou perfeitamente, obrigado mais uma vez. Eu estava tentando em outro evento, por isso não funcionava.

      []s

      Eduardo Cajueiro

      • 46341e312d924239404ac442f5c43ed3?only path=false&size=50&d=404Eduardo Cajueiro(usuário não autenticado)
        4 de Junho de 2012, 14:13

         

        Eu reparei uma outra coisa no formulário que tem uma gridoffline, o foco sempre cai no primeiro campo do formulário da grid. Não tem como colocar o foco no primeiro campo do formulário pai?

        []s

        Eduardo Cajueiro 

        • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
          4 de Junho de 2012, 20:00

           

          Eduardo,

          faça o seguinte,na instância da classe TForm do grid-offline, adicione a seguinte linha :

          $frm->setFocusField('meu campo');

          Isto é poque o formulário do grid-off line está sobreponto do focus do formulário prinicipal, já que ele é montado por último.

          Vou corrigir isso na próxima versão.

          Abraço.

          • 46341e312d924239404ac442f5c43ed3?only path=false&size=50&d=404Eduardo Cajueiro(usuário não autenticado)
            5 de Junho de 2012, 15:22

             

            Funcionou, só mais uma dúvida. Como faço para validar os dados que foram informados no formulário para adicionar no Gride.

            []s

            Eduardo 

            • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
              5 de Junho de 2012, 21:27

               

              Eduardo,

              antes do método show() do formulário, você pode fazer a validação que desejar e ir adicionando as mensagens ao formulário.

              Para validar no grid off-line, veja se a action enviada foi a 'save'  e trate tudo que quiser. Se for adicionado pelo menos um erro ao form, os dados não serão adicionados ao gride.

              Exemplo:

              if( $_REQUEST['action'] == 'save')
              {
                  if( $frm->get('nom_moeda')=='' )
                  {
                      $frm->addError('O campo Moeda é de preenchimento Obrigatório');
                  }
              }

              Abraço.

Essa comunidade não possui posts nesse blog