Edição inline no DataGrid Não estou conseguindo editar no datagrid, quando clico na linha desejada o campo some(Imagem anexo). Segue a criação da grid. ...
T
Edição inline no DataGrid  
Não estou conseguindo editar no datagrid, quando clico na linha desejada o campo some(Imagem anexo).

Segue a criação da grid.

 
  1. <?php
  2. $this->grid = new TDataGrid;
  3. $this->grid->makeScrollable();
  4. $this->grid->setHeight( 150 );
  5. $parcela = new TDataGridColumn('parcela', 'Parcela', 'center', 80);
  6. $dias = new TDataGridColumn('qtdDias', 'Dias', 'center', 80);
  7. $desconto = new TDataGridColumn('percDesconto', 'Desconto %', 'center', 200);
  8. $acrescimo = new TDataGridColumn('percAcrescimo', 'Acrescimo %', 'center', 200);
  9. $comissao = new TDataGridColumn('percComissao', 'Comissão %', 'center', 197);
  10. $this->grid->addColumn($parcela);
  11. $this->grid->addColumn($dias);
  12. $this->grid->addColumn($desconto);
  13. $this->grid->addColumn($acrescimo);
  14. $this->grid->addColumn($comissao);
  15. $editaction = new TDataGridAction(array($this, 'onEditInline'));
  16. $editaction->setField('parcela');
  17. $desconto->setEditAction($editaction);
  18. $this->grid->createModel();
  19. ?>

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 (3)


NR

Thiago, verifique se não a datagrid está dentro de uma tag form. Como o inlineEdit cria um outro form para cada campo, uma tag form dentro de outra pode causar esse problema.
T

Nataniel, não encontrei o erro! Segue todo o código.

 
  1. <?php
  2. class ModalidadeForm extends TPage
  3. {
  4. private $form;
  5. private $dbname;
  6. private $grid;
  7. function __construct()
  8. {
  9. parent::__construct();
  10. $this->dbname = TSession::getValue('dbname');
  11. $this->form = new TForm('modalidade');
  12. $this->form->class = 'tform';
  13. $lbl_titulo = new TLabel('Cadastro de Modalidade de Pagamento');
  14. $lbl_id = new TLabel('ID');
  15. $lbl_descricao = new TLabel('Descrição');
  16. $lbl_parcelas = new TLabel('Parcelas');
  17. $lbl_limite = new TLabel('Verifica Limite');
  18. $lbl_cc = new TLabel('Conta Corrente');
  19. $lbl_apf = new TLabel('APF');
  20. $lbl_intervalo = new TLabel('Intervalo Dias');
  21. $criteria = new TCriteria;
  22. $criteria->add(new TFilter("tipo", "=", "A"));
  23. $id = new TEntry('id');
  24. $descricao = new TEntry('descricao');
  25. $formaPagamento = new TRadioGroup('formaPagamento');
  26. $frame = new TFrame;
  27. $frame2 = new TFrame;
  28. $qtdParcelas = new TEntry('qtdParcelas');
  29. $verificaLimite = new TCheckButton('verificaLimite');
  30. $cod_cc = new ">TDBSeekButton('cad_conta_corrente_id', $this->dbname, 'modalidade', 'Cad_ContaCorrente' , 'descricao', 'cad_conta_corrente_id', 'cc');
  31. $cc = new TEntry('cc');
  32. $cod_apf = new ">TDBSeekButton('cad_apf_id', $this->dbname, 'modalidade', 'Cad_Apf' , 'descricao', 'cad_apf_id', 'apf', $criteria);
  33. $apf = new TEntry('apf');
  34. $intervalo = new TEntry('intervalo');
  35. $button_inserir = new TButton('inserir');
  36. $id->setSize(70);
  37. $id->setEditable(FALSE);
  38. $formaPagamento->setLayout('horizontal');
  39. $descricao->setSize(280);
  40. $qtdParcelas->setSize(70);
  41. $intervalo->setSize(90);
  42. $cod_cc->setSize(40);
  43. $cod_apf->setSize(40);
  44. $cc->setSize(305);
  45. $apf->setSize(270);
  46. $button_inserir->setImage('ico_add.png');
  47. $itens_pagamento = array();
  48. $itens_pagamento['V'] = 'A Vista';
  49. $itens_pagamento['P'] = 'A Prazo';
  50. $itens_pagamento['O'] = 'Outros';
  51. $formaPagamento->addItems($itens_pagamento);
  52. $formaPagamento->setValue('V');
  53. $verificaLimite->setIndexValue('S');
  54. $verificaLimite->setValue('N');
  55. $frame->add($formaPagamento);
  56. $frame->setLegend('Pagamento');
  57. $frame->style = 'height: 43px';
  58. $frame2->style = 'height: 27px; width: 100px;';
  59. $insere_parcelas = new TAction(array($this, 'onInsert'));
  60. $button_inserir->setAction($insere_parcelas, 'Gerar Parcelas');
  61. //Tabela Principal
  62. $table = new TTable;
  63. $table->style = 'width:100%';
  64. $row = $table->addRow();
  65. $row->class = 'tformtitle';
  66. $cell = $row->addCell($lbl_titulo);
  67. $cell->colspan = 2;
  68. //Adicionando os campos ao formulario
  69. $this->grid = new TDataGrid;
  70. $this->grid->makeScrollable();
  71. $this->grid->setHeight( 150 );
  72. $parcela = new TDataGridColumn('parcela', 'Parcela', 'center', 80);
  73. $dias = new TDataGridColumn('qtdDias', 'Dias', 'center', 80);
  74. $desconto = new TDataGridColumn('percDesconto', 'Desconto %', 'center', 200);
  75. $acrescimo = new TDataGridColumn('percAcrescimo', 'Acrescimo %', 'center', 200);
  76. $comissao = new TDataGridColumn('percComissao', 'Comissão %', 'center', 197);
  77. $this->grid->addColumn($parcela);
  78. $this->grid->addColumn($dias);
  79. $this->grid->addColumn($desconto);
  80. $this->grid->addColumn($acrescimo);
  81. $this->grid->addColumn($comissao);
  82. $editaction = new TDataGridAction(array($this, 'onEditInline'));
  83. $editaction->setField('parcela');
  84. $desconto->setEditAction($editaction);
  85. $this->grid->createModel();
  86. $panel = new TPanel(NULL,370);
  87. $panel->put($lbl_id, 0, 0);
  88. $panel->put($lbl_descricao, 225, 52);
  89. $panel->put($lbl_parcelas, 515, 52);
  90. $panel->put($lbl_intervalo, 595, 52);
  91. $panel->put($lbl_limite, 725, 74);
  92. $panel->put($lbl_cc, 0, 104);
  93. $panel->put($lbl_apf, 380, 104);
  94. $panel->put($id, 10, 18);
  95. $panel->put($frame, 8, 53);
  96. $panel->put($descricao, 235, 70);
  97. $panel->put($qtdParcelas, 525, 70);
  98. $panel->put($intervalo, 605, 70);
  99. $panel->put($frame2, 703, 70);
  100. $panel->put($verificaLimite, 717, 74);
  101. $panel->put($cod_cc, 10, 122);
  102. $panel->put($cc, 75, 122);
  103. $panel->put($cod_apf, 390, 122);
  104. $panel->put($apf, 455, 122);
  105. $panel->put($button_inserir, 730, 122);
  106. $panel->put($this->grid, 10, 160);
  107. $row = $table->addRow();
  108. $cell = $row->addCell($panel);
  109. //Fim dos Campos do Forumlario
  110. //Botoes do fomulario
  111. $save_button = new TButton('salvar');
  112. $save_button->setAction(new TAction(array($this, 'onSave')), 'Salvar');
  113. $save_button->setImage('ico_save.png');
  114. $new_button=new TButton('novo');
  115. $new_button->setAction(new TAction(array($this, 'onClear')), 'Novo');
  116. $new_button->setImage('ico_new.png');
  117. $list_button=new TButton('pesquisar');
  118. $list_button->setAction(new TAction(array('ModalidadeList', 'onReload')), 'Pesquisar');
  119. $list_button->setImage('ico_datagrid.png');
  120. $buttons = new THBox;
  121. $buttons->add($save_button);
  122. $buttons->add($new_button);
  123. $buttons->add($list_button);
  124. $row = $table->addRow();
  125. $row->class = 'tformaction';
  126. $cell = $row->addCell( $buttons );
  127. $cell->colspan = 2;
  128. //Fim dos Botoes
  129. $this->form->add($table);
  130. $this->form->setFields(array($id,$descricao,$formaPagamento,$qtdParcelas,$verificaLimite,
  131. $cod_cc,$cc,$cod_apf,$apf,$intervalo,
  132. $save_button,$new_button,$list_button,$button_inserir));
  133. $container = new TTable;
  134. $container->width = '865px';
  135. $container->addRow()->addCell(new TXMLBreadCrumb('menu.xml', 'ModalidadeForm'));
  136. $container->addRow()->addCell($this->form);
  137. parent::add($container);
  138. }
  139. function onEditInline($param)
  140. {
  141. }
  142. function onInsert($param)
  143. {
  144. $dados = $this->form->getData();
  145. TSession::setValue('items_modalidade', NULL);
  146. $dias = 0;
  147. $intervalo = $dados->intervalo;
  148. $parcelas = $dados->qtdParcelas;
  149. for($i=1;$i<=$parcelas;$i++)
  150. {
  151. $key = $i;
  152. $items[ $key ] = array('parcela' => $i,
  153. 'qtdDias' => $dias,
  154. 'percDesconto' => '0,00',
  155. 'percAcrescimo' => '0,00',
  156. 'percComissao' => '0,00',);
  157. $dias = $dias + $intervalo;
  158. }
  159. TSession::setValue('items_modalidade', $items);
  160. $this->form->setData($dados);
  161. $this->onReload($param);
  162. }
  163. function onReload($param = NULL)
  164. {
  165. $items = TSession::getValue('items_modalidade');
  166. $this->grid->clear();
  167. if (isset($items))
  168. {
  169. $cont = 1;
  170. foreach($items as $item)
  171. {
  172. $parcela = new StdClass;
  173. $parcela->parcela = $item['parcela'];
  174. $parcela->qtdDias = $item['qtdDias'];
  175. $parcela->percDesconto = $item['percDesconto'];
  176. $parcela->percAcrescimo = $item['percAcrescimo'];
  177. $parcela->percComissao = $item['percComissao'];
  178. $this->grid->addItem($parcela);
  179. }
  180. }
  181. }
  182. public function onClear()
  183. {
  184. $this->form->clear();
  185. }
  186. function onSave()
  187. {
  188. try
  189. {
  190. TTransaction::open($this->dbname);
  191. $dados = $this->form->getData('Cad_Modalidade');
  192. $this->form->validate();
  193. $dados->store();
  194. TTransaction::close();
  195. new TMessage('info', 'Registro salvo com sucesso');
  196. $this->form->clear();
  197. }
  198. catch (Exception $e)
  199. {
  200. new TMessage('error', $e->getMessage());
  201. TTransaction::rollback();
  202. }
  203. }
  204. function onEdit( $param )
  205. {
  206. try
  207. {
  208. TTransaction::open($this->dbname);
  209. if(isset($param['key']))
  210. {
  211. $key = $param['key'];
  212. $obj = new Cad_Modalidade($key);
  213. $this->form->setData($obj);
  214. }
  215. TTransaction::close();
  216. }
  217. catch (Exception $e)
  218. {
  219. new TMessage('error', $e->getMessage());
  220. }
  221. }
  222. }
  223. ?>
NR

Thiago, a sua estrutura está assim:
form -> table -> panel -> grid -> linhas da grid -> form(este form é gerado pelo inlineEdit) -> coluna da grid

Há um form dentro de outro, e imagino que isso seja a causa do problema.

Reestruture seu código para que a grid não seja filha do form principal.