Visualização de Grid num notebook Pessoal, estou com dificuldade de colocar um datagrid em um notebook. Acredito que a alimentação do mesmo está sendo feito corretamente. A visualização do mesmo que deve estar errada. Agradeço desde já a ajuda. O datagrid fica na quarta aba (Funções em Uso) do notebook. ...
GG
Visualização de Grid num notebook  
Pessoal, estou com dificuldade de colocar um datagrid em um notebook. Acredito que a alimentação do mesmo está sendo feito corretamente. A visualização do mesmo que deve estar errada. Agradeço desde já a ajuda.
O datagrid fica na quarta aba (Funções em Uso) do notebook.


 
  1. <?php
  2. class pessoa_juridica_div_form_view extends TPage
  3. {
  4. private $form; // form
  5. private $contatos;
  6. private $oportunidade;
  7. private $gridfuncoesuso;
  8. /**
  9. * Class constructor
  10. * Creates the page and the registration form
  11. */
  12. function __construct()
  13. {
  14. parent::__construct();
  15. // creates the form
  16. $this->form_funcoesuso = new TQuickForm('form_funcoesuso');
  17. $this->form = new BootstrapFormBuilder('pessoa_juridica_div_form_view');
  18. $this->form->setFormTitle('Cadastro de Clientes');
  19. // create the form fields
  20. $code = new TEntry('id');
  21. $seq_tasy = new TEntry('nr_sequencia');
  22. $nm_fantasia = new TEntry('nm_fantasia');
  23. $nm_pessoa_juridica = new TEntry('nm_pessoa_juridica');
  24. $ds_email_pj = new TEntry('ds_email_pj');
  25. $ds_endereco = new TText('ds_endereco');
  26. // define some properties for the form fields
  27. $code->setEditable(FALSE);
  28. $seq_tasy->setSize('100%');
  29. $nm_fantasia->setSize('100%');
  30. $nm_pessoa_juridica->setSize('100%');
  31. $ds_email_pj->setSize('100%');
  32. $ds_endereco->setSize('100%');
  33. //-------------------------------------//------------------------------------- //-------------------------------------
  34. $this->form->appendPage('Cadastro Básico');
  35. $this->form->addFields( [ new TLabel('Code') ], [ $code ], [ new TLabel('Cd.Tasy') ], [ $seq_tasy ] );
  36. $this->form->addFields( [ new TLabel('Nome Fantasia') ], [ $nm_fantasia ] );
  37. $this->form->addFields( [ new TLabel('Razão Social') ], [ $nm_pessoa_juridica ] );
  38. $this->form->addFields( [ new TLabel('Email') ], [ $ds_email_pj ] );
  39. $this->form->addFields( [ new TLabel('Endereço') ], [ $ds_endereco ] );
  40. $this->form->addAction( 'Save', new TAction(array($this, 'onSave')), 'fa:save green' );
  41. $this->form->addAction( 'Clear', new TAction(array($this, 'onClear')), 'fa:eraser red' );
  42. $this->form->addAction( 'List', new TAction(array('pessoa_juridicaListv1', 'onReload')), 'fa:table blue' );
  43. //-------------------------------------//------------------------------------- //-------------------------------------
  44. $this->form->appendPage('Contatos');
  45. //$id_contato = new THidden('id_contato[]');
  46. //$id_contato->setSize('100%');
  47. $ds_contato = new TEntry('ds_contato[]');
  48. $ds_contato->setSize('100%');
  49. $ds_telefone = new TEntry('ds_telefone[]');
  50. $ds_telefone->setSize('100%');
  51. $ds_email = new TEntry('ds_email[]');
  52. $ds_email->setSize('100%');
  53. $this->pj_contatoss = new TFieldList;
  54. $this->pj_contatoss->addField( '<b>Contato</b>', $ds_contato);
  55. $this->pj_contatoss->addField( '<b>Telefone</b>', $ds_telefone);
  56. $this->pj_contatoss->addField( '<b>Email</b>', $ds_email);
  57. $this->form->addField($ds_contato);
  58. $this->form->addField($ds_telefone);
  59. $this->form->addField($ds_email);
  60. $this->pj_contatoss->enableSorting();
  61. $this->form->addContent( [ new TLabel('Contatos') ], [ $this->pj_contatoss ] );
  62. //-------------------------------------//------------------------------------- //-------------------------------------
  63. $this->form->appendPage('Oportunidades');
  64. //$id_contato = new THidden('id_contato[]');
  65. //$id_contato->setSize('100%');
  66. $nr_op_crm = new TEntry('nr_op_crm[]');
  67. $nr_op_crm->setSize('100%');
  68. $ds_op = new TEntry('ds_op[]');
  69. $ds_op->setSize('100%');
  70. $this->oportunidades = new TFieldList;
  71. $this->oportunidades->addField( '<b>NR.CRM</b>', $nr_op_crm);
  72. $this->oportunidades->addField( '<b>Descrição</b>', $ds_op);
  73. $this->form->addField($nr_op_crm);
  74. $this->form->addField($ds_op);
  75. $this->oportunidades->enableSorting();
  76. $this->form->addContent( [ new TLabel('Oportunidades') ], [ $this->oportunidades ] );
  77. //-------------------------------------//------------------------------------- //-------------------------------------
  78. //$this->form->appendPage('Funções em Uso');
  79. $this->gridfuncoesuso = new TQuickGrid;
  80. $this->gridfuncoesuso->setHeight(230);
  81. $this->gridfuncoesuso->addQuickColumn('Função', 'funcao_id', 'right', 40);
  82. $this->gridfuncoesuso->addQuickColumn('Acessos', 'qt_acessos', 'left', 40);
  83. $this->gridfuncoesuso->createModel();
  84. $this->form_funcoesuso->add($this->gridfuncoesuso);
  85. $this->form->appendPage('Funções em Uso',$this->form_funcoesuso);
  86. //$this->form_funcoesuso->add($this->datagrid);
  87. //$this->form->appendPage('Funções em Uso', $this->form_funcoesuso);
  88. //$this->form->addContent( [ new TLabel('Funções em Uso') ], [ $this->funcoes_usos ] );
  89. //-------------------------------------//------------------------------------- //-------------------------------------
  90. // wrap the page content
  91. $vbox = new TVBox;
  92. $vbox->add(new TXMLBreadCrumb('menu.xml', 'pessoa_juridicaListv1'));
  93. $vbox->add($this->form);
  94. // add the form inside the page
  95. parent::add($vbox);
  96. }
  97. /**
  98. * method onSave
  99. * Executed whenever the user clicks at the save button
  100. */
  101. public static function onSave($param)
  102. {
  103. try
  104. {
  105. // open a transaction with database 'samples'
  106. TTransaction::open('solicitacoes');
  107. // read the form data and instantiates an Active Record
  108. $pessoa_juridica = new pessoa_juridica;
  109. $pessoa_juridica->fromArray( $param );
  110. if( !empty($param['ds_contato']) AND is_array($param['ds_contato']) )
  111. {
  112. foreach( $param['ds_contato'] as $row => $ds_contato)
  113. {
  114. if ($ds_contato)
  115. {
  116. $pj_contatos = new pj_contatos;
  117. $pj_contatos->ds_contato = $param['ds_contato'][$row];
  118. $pj_contatos->ds_telefone = $param['ds_telefone'][$row];
  119. $pj_contatos->ds_email = $param['ds_email'][$row];
  120. // add the contact to the customer
  121. $pessoa_juridica->addpj_contatos($pj_contatos);
  122. }
  123. }
  124. }
  125. if( !empty($param['nr_op_crm']) AND is_array($param['nr_op_crm']) )
  126. {
  127. foreach( $param['nr_op_crm'] as $row => $nr_op_crm)
  128. {
  129. if ($nr_op_crm)
  130. {
  131. $oportunidade = new oportunidade;
  132. $oportunidade->nr_op_crm = $param['nr_op_crm'][$row];
  133. $oportunidade->ds_op = $param['ds_op'][$row];
  134. // add the contact to the customer
  135. $pessoa_juridica->addoportunidade($oportunidade);
  136. }
  137. }
  138. }
  139. // stores the object in the database
  140. $pessoa_juridica->store();
  141. $data = new stdClass;
  142. $data->id = $pessoa_juridica->id;
  143. TForm::sendData('pessoa_juridica_div_form_view', $data);
  144. // shows the success message
  145. new TMessage('info', 'Record saved');
  146. TTransaction::close(); // close the transaction
  147. }
  148. catch (Exception $e) // in case of exception
  149. {
  150. // shows the exception error message
  151. new TMessage('error', $e->getMessage());
  152. // undo all pending operations
  153. TTransaction::rollback();
  154. }
  155. }
  156. /**
  157. * method onEdit
  158. * Edit a record data
  159. */
  160. function onEdit($param)
  161. {
  162. try
  163. {
  164. if (isset($param['id']))
  165. {
  166. // open a transaction with database 'samples'
  167. TTransaction::open('solicitacoes');
  168. // load the Active Record according to its ID
  169. $pessoa_juridica = new pessoa_juridica($param['id']);
  170. // load the contacts (composition)
  171. $pj_contatoss = $pessoa_juridica->getpj_contatoss();
  172. $oportunidades = $pessoa_juridica->getoportunidades();
  173. if ($pj_contatoss)
  174. {
  175. $this->pj_contatoss->addHeader();
  176. foreach ($pj_contatoss as $pj_contatos)
  177. {
  178. $contato_detail = new stdClass;
  179. $contato_detail->ds_contato = $pj_contatos->ds_contato;
  180. $contato_detail->ds_telefone = $pj_contatos->ds_telefone;
  181. $contato_detail->ds_email = $pj_contatos->ds_email;
  182. $this->pj_contatoss->addDetail($contato_detail);
  183. }
  184. $this->pj_contatoss->addCloneAction();
  185. }
  186. else
  187. {
  188. $this->onClear_contatos($param);
  189. }
  190. if ($oportunidades)
  191. {
  192. $this->oportunidades->addHeader();
  193. foreach ($oportunidades as $oportunidade)
  194. {
  195. $oportunidade_detail = new stdClass;
  196. $oportunidade_detail->nr_op_crm = $oportunidade->nr_op_crm;
  197. $oportunidade_detail->ds_op = $oportunidade->ds_op;
  198. $this->oportunidades->addDetail($oportunidade_detail);
  199. }
  200. $this->oportunidades->addCloneAction();
  201. }
  202. else
  203. {
  204. $this->onClear_oportunidade($param);
  205. }
  206. // load the contacts (composition)
  207. $funcoes_usos = $pessoa_juridica->getFuncoesUsos();
  208. $items = array();
  209. $n = 0;
  210. if ($funcoes_usos)
  211. {
  212. //$this->funcoes_usos->addHeader();
  213. foreach ($funcoes_usos as $funcoes_uso)
  214. {
  215. $n = $n +1;
  216. $items[n] = $funcoes_uso->ds_funcao;
  217. }
  218. new TMessage('info', $n);
  219. $this->gridfuncoesuso->addItems($items);
  220. }
  221. // fill the form with the active record data
  222. $this->form->setData($pessoa_juridica);
  223. // close the transaction
  224. TTransaction::close();
  225. }
  226. else
  227. {
  228. $this->onClear($param);
  229. }
  230. }
  231. catch (Exception $e) // in case of exception
  232. {
  233. // shows the exception error message
  234. new TMessage('error', $e->getMessage());
  235. // undo all pending operations
  236. TTransaction::rollback();
  237. }
  238. }
  239. /**
  240. * Clear form
  241. */
  242. public function onClear($param)
  243. {
  244. //$this->form->clear();
  245. $this->pj_contatoss->addHeader();
  246. $this->pj_contatoss->addDetail( new stdClass );
  247. $this->pj_contatoss->addCloneAction();
  248. $this->oportunidades->addHeader();
  249. $this->oportunidades->addDetail( new stdClass );
  250. $this->oportunidades->addCloneAction();
  251. $this->funcoes_usos->addHeader();
  252. $this->funcoes_usos->addDetail( new stdClass );
  253. $this->funcoes_usos->addCloneAction();
  254. }
  255. /**
  256. * Clear form
  257. */
  258. public function onClear_contatos($param)
  259. {
  260. //$this->form->clear();
  261. $this->pj_contatoss->addHeader();
  262. $this->pj_contatoss->addDetail( new stdClass );
  263. $this->pj_contatoss->addCloneAction();
  264. }
  265. /**
  266. * Clear form
  267. */
  268. public function onClear_oportunidade($param)
  269. {
  270. //$this->form->clear();
  271. $this->oportunidades->addHeader();
  272. $this->oportunidades->addDetail( new stdClass );
  273. $this->oportunidades->addCloneAction();
  274. }
  275. }

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


NR

Não é possível adicionar um form dentro de outro. Por qual motivo você quer adicionar um form específico pra grid?
GG

Nataniel, na verdade só usei um código que havia encontrado aqui no grupo. Eu preciso acrescentar um grid no Notebook. Tentei de várias formas e ainda não consegui visualizar o grid no Notebook. Não gera nenhum erro. Mas tbem não visualizo o objeto.

Obrigado pela atenção.


GG

Nataniel, na verdade só usei um código que havia encontrado aqui no grupo. Eu preciso acrescentar um grid no Notebook. Tentei de várias formas e ainda não consegui visualizar o grid no Notebook. Não gera nenhum erro. Mas tbem não visualizo o objeto.

Obrigado pela atenção.


NR

A função appendPage da classe BootstrapFormBuilder só possui 1 parâmetro referente a descrição da aba. A datagrid deve ser adicionada posteriormente:
 
  1. <?php
  2. //public function appendPage($title)
  3. $this->form->appendPage('Funções em Uso');
  4. $this->form->addContent([$this->gridfuncoesuso]);
  5. ?>