Recuperar dados da datagrid outro probleminha galera, me socorrem rsrs... criei uma datagrid com checkbutton e TCombo, ta funcionando belezinha, mas na hora de salvar os dados não consigo pegar esses dados para salvar. coloquei um print_r e os dados não aparecem, somente as variáveis do array sem valores, notei o seguinte, os dados que estão nos campos de filtro no inicio da pagina são recuperados no getData(), porém ...
BI
Recuperar dados da datagrid  
Fechado
outro probleminha galera, me socorrem rsrs... criei uma datagrid com checkbutton e TCombo, ta funcionando belezinha, mas na hora de salvar os dados não consigo pegar esses dados para salvar.
coloquei um print_r e os dados não aparecem, somente as variáveis do array sem valores, notei o seguinte, os dados que estão nos campos de filtro no inicio da pagina são recuperados no getData(), porém os dados que estão nos campos do datagrid não consigo ... segue o codigo:

 
  1. <?php
  2. function onReload($param = NULL)
  3. {
  4. try
  5. {
  6. // open a transaction with database 'sqlserver'
  7. TTransaction::open('sqlserver');
  8. // creates a repository for Coig
  9. $repository = new TRepository('Coig');
  10. $limit = 30;
  11. // creates a criteria
  12. $criteria = new TCriteria;
  13. // load the objects according to criteria
  14. $objects = $repository->load($criteria, FALSE);
  15. $this->datagrid->clear();
  16. if ($objects)
  17. {
  18. //--abre uma conexão para carrecar os eventos reais
  19. TTransaction::open('sqlserver');
  20. $repository2 = new TRepository('EventoReal');
  21. $eventoreal = $repository2->load();
  22. $item = array();
  23. foreach ($eventoreal as $eventoreals){
  24. $item[$eventoreals->id] = $eventoreals->evento;
  25. }
  26. // iterate the collection of active records
  27. foreach ($objects as $object)
  28. {
  29. $eventoID = $object->evento_real_id;
  30. $valido = $object->validador;
  31. $object->validador = new TCheckButton("validador_".$object->id);
  32. $object->validador->setIndexValue('1');
  33. if ($valido == 1){
  34. $object->validador->setProperty('checked', 1);
  35. }
  36. $object->evento_real_id = new TCombo('evento_real_id_'.$object->id);
  37. $object->evento_real_id->addItems($item);
  38. $object->evento_real_id->setValue($eventoID);
  39. // add the object inside the datagrid
  40. $row = $this->datagrid->addItem($object);
  41. //coloca os itens em popover
  42. $tabela = "<table class='popover-table'>";
  43. $tabela .= "<tr><td><b>Potência Ativa:</b> {$object->potencia}</td><td><b>Nível montante:</b> {$object->nivel_montante}</td></tr>";
  44. $tabela .= "<tr><td><b>Postado por:</b> {$object->responsavel}</td><td> {$object->agora}</td></tr>";
  45. if ($object->editor){
  46. $tabela .= "<tr><td><b>Editado por:</b> {$object->editor}</td><td> {$object->data_edicao}</td></tr>";
  47. }
  48. //coloca os itens em popover
  49. $row->popover = 'true';
  50. $row->popcontent = $tabela;
  51. $row->poptitle = 'Detalhes';
  52. $row = $this->form->addField($object->validador);
  53. $row = $this->form->addField($object->evento_real_id);
  54. }
  55. }
  56. // reset the criteria for record count
  57. $criteria->resetProperties();
  58. $count= $repository->count($criteria);
  59. $this->pageNavigation->setCount($count); // count of records
  60. $this->pageNavigation->setProperties($param); // order, page
  61. $this->pageNavigation->setLimit($limit); // limit
  62. // close the transaction
  63. TTransaction::close();
  64. $this->loaded = true;
  65. }
  66. catch (Exception $e) // in case of exception
  67. {
  68. // shows the exception error message
  69. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  70. // undo all pending operations
  71. TTransaction::rollback();
  72. }
  73. }
  74. public function onSave($param)
  75. {
  76. TTransaction::open('sqlserver'); // open a transaction
  77. // get the form data into an active record Coig
  78. $data = $this->form->getData('Coig');
  79. $this->form->setData($data);
  80. // put the data back to the form
  81. //$this->form->setData($data);
  82. // creates a string with the form element's values
  83. $message = $data->evento_real_id_ . $data->id .'<br>';
  84. $message.= $data->data_coig .'<br>';
  85. $message.= $data->validador_ . $data->id .'<br>';
  86. $message.= $data->validador_ . $data->id .'<br>';
  87. print_r($data);
  88. // show the message
  89. new TMessage('info', $message);
  90. }
  91. ?>



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)


FC

troque $data = $this->form->getData('Coig');
por $data = $this->form->getData();
BI

descobri o problema... nessa classe controle o dataGrid não está dentro do 'form' por isso não consigo recuperar os dados da tela, só que quando coloco ele dentro do form os campos de pesquisa não aparecem na tela.

Como faço para colocar os campos de pesquisa e a dataGrid no form?
BI

olha o código...
 
  1. <?php
  2. public function __construct()
  3. {
  4. parent::__construct();
  5. // creates the form
  6. $this->form = new TForm('form_search_ValCoig');
  7. $this->form->class = 'tform'; // CSS class
  8. // creates a table
  9. $table = new TTable;
  10. $table-> width = '1000px';
  11. $this->form->add($table);
  12. // add a row for the form title
  13. $row = $table->addRow();
  14. $row->class = 'tformtitle'; // CSS class
  15. $row->addCell( new TLabel('Valida COIG') )->colspan = 10;
  16. // create the form fields
  17. $id = new TEntry('id');
  18. $data_coig = new TDate('data_coig');
  19. $empreendimento_id = new TDBCombo('empreendimento_id','sqlserver','Empreendimento','id','sigla');
  20. $aplicacao_id = new TCombo('aplicacao_id');
  21. $evento_aplicacao_id = new TCombo('evento_aplicacao_id');
  22. $nivel_montante = new TEntry('nivel_montante');
  23. $obs = new TEntry('obs');
  24. $systemuser_id = new TDBCombo('systemuser_id','sqlserver','SystemUser','id','name');
  25. $relevancia = new TDBCombo('relevancia_id','sqlserver','relevancia','id','descricao');
  26. // set change action for empreendimento
  27. $change_action = new TAction(array($this, 'onChange'));
  28. $empreendimento_id->setChangeAction($change_action);
  29. $change_action2 = new TAction(array($this, 'onChange2'));
  30. $aplicacao_id->setChangeAction($change_action2);
  31. // define the sizes
  32. $id->setSize(50);
  33. $id->setMask('9999');
  34. $data_coig->setSize(90);
  35. $empreendimento_id->setSize(70);
  36. $aplicacao_id->setSize(70);
  37. $evento_aplicacao_id->setSize(350);
  38. $nivel_montante->setSize(70);
  39. $nivel_montante->setMask('999.99');
  40. $obs->setSize(340);
  41. $systemuser_id->setSize(350);
  42. $relevancia->setSize(100);
  43. $row = $table->addRow();
  44. $row->addCell(new TLabel('ID:'));
  45. $row->addCell($id);
  46. $row->addCell(new TLabel('Data:'));
  47. $row->addCell($data_coig);
  48. $row->addCell(new TLabel('Usina:'));
  49. $row->addCell($empreendimento_id);
  50. $row->addCell(new TLabel('Aplicação:'));
  51. $row->addCell($aplicacao_id);
  52. $row->addCell(new TLabel('Ocorrência:'));
  53. $row->addCell($evento_aplicacao_id);
  54. $row = $table->addRow();
  55. $row->addCell(new TLabel('Obs:'));
  56. $row->addCell($obs)->colspan = 5;
  57. $row->addCell(new TLabel('Montante:'));
  58. $row->addCell($nivel_montante);
  59. $row->addCell(new TLabel('Responsavel:'));
  60. $row->addCell($systemuser_id);
  61. $row = $table->addRow();
  62. $row->addCell(new TLabel('Relev:'));
  63. $row->addCell($relevancia)->colspan = 5;
  64. $this->form->setFields(array($id,$data_coig,$empreendimento_id,$aplicacao_id,$evento_aplicacao_id,$nivel_montante,$obs,$systemuser_id, $relevancia));
  65. // keep the form filled during navigation with session data
  66. $this->form->setData( TSession::getValue('Coig_filter_data') );
  67. // create two action buttons to the form
  68. $find_button = TButton::create('find', array($this, 'onSearch'), _t('Find'), 'ico_find.png');
  69. //$new_button = TButton::create('new', array('CoigForm', 'onEdit'), _t('New'), 'ico_new.png');
  70. $this->form->addField($find_button);
  71. //$this->form->addField($new_button);
  72. $buttons_box = new THBox;
  73. $buttons_box->add($find_button);
  74. //$buttons_box->add($new_button);
  75. // add a row for the form action
  76. $row = $table->addRow();
  77. $row->class = 'tformaction'; // CSS class
  78. $row->addCell($buttons_box)->colspan = 10;
  79. //------ creates a Datagrid----------------
  80. $this->datagrid = new TDataGrid;
  81. //$this->datagrid->makeScrollable();
  82. $this->datagrid->disableDefaultClick(); // important!
  83. $this->datagrid->setHeight(320);
  84. //$this->form->add($this->datagrid);
  85. // creates the datagrid columns
  86. $id = new TDataGridColumn('id', 'ID', 'center', 20);
  87. $data_coig = new TDataGridColumn('data_coig', 'Data', 'left', 50);
  88. $data_coig->setTransformer(array($this, 'formatDate'));//chama a função de transformar data
  89. $hora = new TDataGridColumn('hora', 'Hora', 'left', 50);
  90. $hora->setTransformer(array($this, 'formatHora'));//chama a função de transformar hora
  91. $empreendimento_id = new TDataGridColumn('empreendimentos', 'Usina', 'center', 50);
  92. $aplicacao_id = new TDataGridColumn('aplicacaos', 'Aplicação', 'center', 50);
  93. $evento_aplicacao_id = new TDataGridColumn('nome_evento', 'Ocorrência', 'left', 350);
  94. $obs = new TDataGridColumn('obs', 'Obs', 'left', 350);
  95. $evento_real_id = new TDataGridColumn('evento_real_id', 'Evento Real', 'left', 100);
  96. $validador = new TDataGridColumn('validador', 'Ok', 'center', 20);
  97. $id->setTransformer(array($this, 'formatRelevancia'));
  98. // add the columns to the DataGrid
  99. $this->datagrid->addColumn($id);
  100. $this->datagrid->addColumn($data_coig);
  101. $this->datagrid->addColumn($hora);
  102. $this->datagrid->addColumn($empreendimento_id);
  103. $this->datagrid->addColumn($aplicacao_id);
  104. $this->datagrid->addColumn($evento_aplicacao_id);
  105. $this->datagrid->addColumn($obs);
  106. $this->datagrid->addColumn($evento_real_id);
  107. $this->datagrid->addColumn($validador);
  108. // create the datagrid model
  109. $this->datagrid->createModel();
  110. // creates the page navigation
  111. $this->pageNavigation = new TPageNavigation;
  112. $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
  113. $this->pageNavigation->setWidth($this->datagrid->getWidth());
  114. $table = new TTable;
  115. $table->style = 'width: 90%';
  116. $table->addRow()->addCell(new TXMLBreadCrumb('menu.xml', __CLASS__));
  117. $table->addRow()->addCell($this->form);
  118. $table->addRow()->addCell($this->datagrid);
  119. //----botão salvar----------
  120. $save_button = TButton::create('save', array($this, 'onSave'), ('Salvar'), 'ico_save.png');
  121. $this->form->addField($save_button);
  122. $buttons_box1 = new THBox;
  123. $buttons_box1->add($save_button);
  124. $row = $table->addRow()->addCell($buttons_box1);
  125. $row->class = 'tformaction'; // CSS class
  126. //navegador de paginas
  127. $row = $table->addRow()->addCell($this->pageNavigation);
  128. parent::add($table);
  129. }
  130. ?>