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 cli...
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

 
  1. <?php
  2. function OnReload($param = NULL)
  3. {
  4. if (trim(TSession::getValue('dt')) <> '')
  5. {
  6. try
  7. {
  8. // open a transaction with database 'erpweb'
  9. TTransaction::open('erpweb');
  10. // creates a repository for view gera cotacao
  11. $repository = new TRepository('viewgeracotacao');
  12. $limit = 5;
  13. //$param['order'] = 'cod_solicitacao';
  14. // creates a criteria
  15. $ldatai = TDataBD::conversao(TSession::getValue('ddi'));
  16. $ldataf = TDataBD::conversao(TSession::getValue('ddf'));
  17. $criteria = new TCriteria;
  18. $criteria->add(new TFilter('empresa','=',TSession::getValue('gempresa')));
  19. $criteria->add(new TFilter('filial','=',TSession::getValue('gfilial')));
  20. $criteria->add(new TFilter('emissao','>=', $ldatai));
  21. $criteria->add(new TFilter('emissao','<=', $ldataf));
  22. if ( TSession::getValue('dt') == 1)
  23. {
  24. $criteria->add(new TFilter('cotacao','=', 0));
  25. } else
  26. {
  27. $criteria->add(new TFilter('cotacao','<>', 0));
  28. }
  29. $criteria->setProperties($param); // order, offset
  30. $criteria->setProperty('limit', $limit);
  31. // carrrega dados
  32. $tabela = $repository->load($criteria, FALSE);
  33. $this->datagrid->clear();
  34. // cria acao para botao check
  35. //$action =new TAction(array($this,'OnMarca'));
  36. //$string_action = $action->serialize(FALSE);
  37. $i = 1;
  38. if ($tabela)
  39. {
  40. // iterate the collection of active records
  41. foreach ($tabela as $row)
  42. {
  43. $item = new StdClass;
  44. $item->check = new TCheckButton('check_' . $i);
  45. $item->check->setIndexValue($row->cod_solicitacao);
  46. //$item->check->setProperty('onChange',"__adianti_post_lookup('{$this->form->getName()}', '{$string_action}', this)");
  47. // passa data para formato brasileiro
  48. $item->emissao = TDataBR::conversao($row->emissao);
  49. $item->colaborador = $row->colaborador;
  50. $item->cod_solicitacao = $row->cod_solicitacao;
  51. $item->cotacao = $row->cotacao;
  52. // add the object inside the datagrid
  53. $this->datagrid->addItem($item);
  54. //$this->form->setFields($this->formfields);
  55. if (!$this->loaded)
  56. {
  57. $this->form->addField($item->check);
  58. }
  59. $i++;
  60. }
  61. }
  62. // reset the criteria for record count
  63. $criteria->resetProperties();
  64. $count= $repository->count($criteria);
  65. $this->pageNavigation->setCount($count); // count of records
  66. $this->pageNavigation->setProperties($param); // order, page
  67. $this->pageNavigation->setLimit($limit); // limit
  68. // close the transaction
  69. TTransaction::close();
  70. $this->loaded = true;
  71. TSession::setValue('atualiza_grade',0);
  72. $send = new StdClass;
  73. $send->data_inicial = TSession::getValue('ddi');
  74. $send->data_final = TSession::getValue('ddf');
  75. $send->dias = TSession::getValue('dd');
  76. $send->tipo = TSession::getValue('dt');
  77. TForm::sendData('form_geracotacao', $send);
  78. }
  79. catch (Exception $e) // in case of exception
  80. {
  81. // shows the exception error message
  82. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  83. // undo all pending operations
  84. TTransaction::rollback();
  85. }
  86. }
  87. }
  88. />

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (1)


AN

Descobri aqui,

Bastou desabilitar o click padrão da grade através do comando disableDefaultClick().