AN
ChckButton com Datagrid
Ola.
Estou tentando implementar um Datagrid com Checkbutton, mais estou com um problema.
As funcionalidades que preciso são:
1) Quando o usuário clicar em uma linha da grade superior (cabecalho da solicitação de compra) os itens da solicitação apareçam na grade inferior . Para tanto criei uma ação na grade para realizar isso (conforme figura). Isso está funcionando.
2) Ao clicar no check ele marque e desmarque e isso não está funcionando pois a ação sobrepoe ao marcar e desmarcar. Segue codigo do OnReload da grade.
Alguma sugestão?
Obrigado
Estou tentando implementar um Datagrid com Checkbutton, mais estou com um problema.
As funcionalidades que preciso são:
1) Quando o usuário clicar em uma linha da grade superior (cabecalho da solicitação de compra) os itens da solicitação apareçam na grade inferior . Para tanto criei uma ação na grade para realizar isso (conforme figura). Isso está funcionando.
2) Ao clicar no check ele marque e desmarque e isso não está funcionando pois a ação sobrepoe ao marcar e desmarcar. Segue codigo do OnReload da grade.
Alguma sugestão?
Obrigado
- <?php
- function OnReload($param = NULL)
- {
- if (trim(TSession::getValue('dt')) <> '')
- {
- try
- {
- // open a transaction with database 'erpweb'
- TTransaction::open('erpweb');
- // creates a repository for view gera cotacao
- $repository = new TRepository('viewgeracotacao');
- $limit = 5;
- //$param['order'] = 'cod_solicitacao';
- // creates a criteria
- $ldatai = TDataBD::conversao(TSession::getValue('ddi'));
- $ldataf = TDataBD::conversao(TSession::getValue('ddf'));
- $criteria = new TCriteria;
- $criteria->add(new TFilter('empresa','=',TSession::getValue('gempresa')));
- $criteria->add(new TFilter('filial','=',TSession::getValue('gfilial')));
- $criteria->add(new TFilter('emissao','>=', $ldatai));
- $criteria->add(new TFilter('emissao','<=', $ldataf));
- if ( TSession::getValue('dt') == 1)
- {
- $criteria->add(new TFilter('cotacao','=', 0));
- } else
- {
- $criteria->add(new TFilter('cotacao','<>', 0));
- }
- $criteria->setProperties($param); // order, offset
- $criteria->setProperty('limit', $limit);
- // carrrega dados
- $tabela = $repository->load($criteria, FALSE);
- $this->datagrid->clear();
- // cria acao para botao check
- //$action =new TAction(array($this,'OnMarca'));
- //$string_action = $action->serialize(FALSE);
- $i = 1;
- if ($tabela)
- {
- // iterate the collection of active records
- foreach ($tabela as $row)
- {
- $item = new StdClass;
- $item->check = new TCheckButton('check_' . $i);
- $item->check->setIndexValue($row->cod_solicitacao);
- //$item->check->setProperty('onChange',"__adianti_post_lookup('{$this->form->getName()}', '{$string_action}', this)");
- // passa data para formato brasileiro
- $item->emissao = TDataBR::conversao($row->emissao);
- $item->colaborador = $row->colaborador;
- $item->cod_solicitacao = $row->cod_solicitacao;
- $item->cotacao = $row->cotacao;
- // add the object inside the datagrid
- $this->datagrid->addItem($item);
- //$this->form->setFields($this->formfields);
- if (!$this->loaded)
- {
- $this->form->addField($item->check);
- }
- $i++;
- }
- }
- // reset the criteria for record count
- $criteria->resetProperties();
- $count= $repository->count($criteria);
- $this->pageNavigation->setCount($count); // count of records
- $this->pageNavigation->setProperties($param); // order, page
- $this->pageNavigation->setLimit($limit); // limit
- // close the transaction
- TTransaction::close();
- $this->loaded = true;
- TSession::setValue('atualiza_grade',0);
- $send = new StdClass;
- $send->data_inicial = TSession::getValue('ddi');
- $send->data_final = TSession::getValue('ddf');
- $send->dias = TSession::getValue('dd');
- $send->tipo = TSession::getValue('dt');
- TForm::sendData('form_geracotacao', $send);
- }
- catch (Exception $e) // in case of exception
- {
- // shows the exception error message
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- // undo all pending operations
- TTransaction::rollback();
- }
- }
- }
- />
Descobri aqui,
Bastou desabilitar o click padrão da grade através do comando disableDefaultClick().