Como trabalhar com os dados que já foram carregados no DataGrid? Olá. Minha dúvida seria sobre como trabalhar com os dados que já foram carregados no DataGrid sem acessar o banco novamente? Quero pegar os dados da lista toda, mas não quero abrir uma nova transação para pegar os dados, visto que os dados já foram carregados e estão sendo exibidos em tela na lista (estão na memória). Então como faço para pegar todos os dados de uma coluna por exemplo...
EA
Como trabalhar com os dados que já foram carregados no DataGrid?  
Fechado
Olá. Minha dúvida seria sobre como trabalhar com os dados que já foram carregados no DataGrid sem acessar o banco novamente?
Quero pegar os dados da lista toda, mas não quero abrir uma nova transação para pegar os dados, visto que os dados já foram carregados e estão sendo exibidos em tela na lista (estão na memória). Então como faço para pegar todos os dados de uma coluna por exemplo, sem acessar o banco novamente?

Obrigado.

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)


LC

Talvez esses exemplos possa ajudar:
www.adianti.com.br/framework_files/tutor/index.php?class=DatagridInp
www.adianti.com.br/framework_files/tutor/index.php?class=DatagridChe

Não sei como seria o comportamento quando tem mais de uma pagina.
EA

Olá Leandro, obrigado pelo retorno.

Estou com problemas na hora de pegar os dados do conteiner, não sei como fazer isto.
Estou usando o comando $data = $this->form->getContainer(); mas não sei como tratar a variável data para pegar todos os dados de uma coluna deste Container.
Segue código:

 
  1. <?php
  2. /**
  3. * DeviceSelectionList Record selection
  4. * @author <your name here>
  5. */
  6. class DeviceSelectionList extends TStandardList
  7. {
  8. protected $form; // search form
  9. protected $datagrid; // listing
  10. protected $pageNavigation;
  11. /**
  12. * Page constructor
  13. */
  14. public function __construct()
  15. {
  16. parent::__construct();
  17. parent::setDatabase('celulares'); // defines the database
  18. parent::setActiveRecord('Device'); // defines the active record
  19. parent::setDefaultOrder('id', 'asc'); // defines the default order
  20. // parent::setCriteria($criteria) // define a standard filter
  21. parent::addFilterField('id', 'like', 'id'); // filterField, operator, formField
  22. parent::addFilterField('registration_id', 'like', 'registration_id'); // filterField, operator, formField
  23. parent::addFilterField('timestamp', 'like', 'timestamp'); // filterField, operator, formField
  24. parent::addFilterField('linguagem_pais', 'like', 'linguagem_pais'); // filterField, operator, formField
  25. parent::addFilterField('email', 'like', 'email'); // filterField, operator, formField
  26. // creates the form
  27. $this->form = new TQuickForm('form_search_Device');
  28. $this->form->class = 'tform'; // change CSS class
  29. $this->form->style = 'display: table;width:100%'; // change style
  30. $this->form->setFormTitle('Device');
  31. // create the form fields
  32. $id = new TEntry('id');
  33. $registration_id = new TEntry('registration_id');
  34. $timestamp = new TEntry('timestamp');
  35. $linguagem_pais = new TEntry('linguagem_pais');
  36. $email = new TEntry('email');
  37. // add the fields
  38. $this->form->addQuickField('Id', $id, 200 );
  39. $this->form->addQuickField('Registration Id', $registration_id, 200 );
  40. $this->form->addQuickField('Timestamp', $timestamp, 200 );
  41. $this->form->addQuickField('Linguagem Pais', $linguagem_pais, 200 );
  42. $this->form->addQuickField('Email', $email, 200 );
  43. // keep the form filled during navigation with session data
  44. $this->form->setData( TSession::getValue('Device_filter_data') );
  45. // add the search form actions
  46. $this->form->addQuickAction(_t('Find'), new TAction(array($this, 'onSearch')), 'fa:search');
  47. $this->form->addQuickAction( 'Show results', new TAction(array($this, 'showResults')), 'fa:check-circle-o green' );
  48. $this->form->addQuickAction( 'tratarRegistrationIds', new TAction(array($this, 'tratarRegistrationIds')), 'fa:check-circle-o green' );
  49. // creates a DataGrid
  50. $this->datagrid = new TDataGrid;
  51. $this->datagrid->style = 'width: 100%';
  52. $this->datagrid->setHeight(320);
  53. // $this->datagrid->datatable = 'true';
  54. // $this->datagrid->enablePopover('Popover', 'Hi <b> {name} </b>');
  55. // creates the datagrid columns
  56. $column_id = new TDataGridColumn('id', 'Id', 'right');
  57. $column_registration_id = new TDataGridColumn('registration_id', 'Registration Id', 'left');
  58. $column_timestamp = new TDataGridColumn('timestamp', 'Timestamp', 'left');
  59. $column_linguagem_pais = new TDataGridColumn('linguagem_pais', 'Linguagem Pais', 'left');
  60. $column_email = new TDataGridColumn('email', 'Email', 'left');
  61. // add the columns to the DataGrid
  62. $this->datagrid->addColumn($column_id);
  63. $this->datagrid->addColumn($column_registration_id);
  64. $this->datagrid->addColumn($column_timestamp);
  65. $this->datagrid->addColumn($column_linguagem_pais);
  66. $this->datagrid->addColumn($column_email);
  67. $column_id->setTransformer(array($this, 'formatRow') );
  68. // creates the datagrid actions
  69. $action1 = new TDataGridAction(array($this, 'onSelect'));
  70. $action1->setUseButton(TRUE);
  71. $action1->setButtonClass('btn btn-default');
  72. $action1->setLabel(AdiantiCoreTranslator::translate('Select'));
  73. $action1->setImage('fa:check-circle-o blue');
  74. $action1->setField('id');
  75. // add the actions to the datagrid
  76. $this->datagrid->addAction($action1);
  77. // create the datagrid model
  78. $this->datagrid->createModel();
  79. // create the page navigation
  80. $this->pageNavigation = new TPageNavigation;
  81. $this->pageNavigation->setAction(new TAction(array($this, 'onReload')));
  82. $this->pageNavigation->setWidth($this->datagrid->getWidth());
  83. // vertical box container
  84. $container = new TVBox;
  85. $container->style = 'width: 90%';
  86. // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  87. $container->add($this->form);
  88. $container->add($this->datagrid);
  89. $container->add($this->pageNavigation);
  90. parent::add($container);
  91. }
  92. /**
  93. * Save the object reference in session
  94. */
  95. public function onSelect($param)
  96. {
  97. // get the selected objects from session
  98. $selected_objects = TSession::getValue(__CLASS__.'_selected_objects');
  99. TTransaction::open('jesustefala');
  100. $object = new Device($param['key']); // load the object
  101. if (isset($selected_objects[$object->id]))
  102. {
  103. unset($selected_objects[$object->id]);
  104. }
  105. else
  106. {
  107. $selected_objects[$object->id] = $object->toArray(); // add the object inside the array
  108. }
  109. TSession::setValue(__CLASS__.'_selected_objects', $selected_objects); // put the array back to the session
  110. TTransaction::close();
  111. // reload datagrids
  112. $this->onReload( func_get_arg(0) );
  113. }
  114. /**
  115. * Highlight the selected rows
  116. */
  117. public function formatRow($value, $object, $row)
  118. {
  119. $selected_objects = TSession::getValue(__CLASS__.'_selected_objects');
  120. if ($selected_objects)
  121. {
  122. if (in_array( (int) $value, array_keys( $selected_objects ) ) )
  123. {
  124. $row->style = "background: #FFD965";
  125. }
  126. }
  127. return $value;
  128. }
  129. /**
  130. * Show selected records
  131. */
  132. public function showResults()
  133. {
  134. $datagrid = new BootstrapDatagridWrapper(new TQuickGrid);
  135. $datagrid->addQuickColumn('Id', 'id', 'right');
  136. $datagrid->addQuickColumn('Registration Id', 'registration_id', 'left');
  137. $datagrid->addQuickColumn('Timestamp', 'timestamp', 'left');
  138. $datagrid->addQuickColumn('Linguagem Pais', 'linguagem_pais', 'left');
  139. $datagrid->addQuickColumn('Email', 'email', 'left');
  140. // create the datagrid model
  141. $datagrid->createModel();
  142. $selected_objects = TSession::getValue(__CLASS__.'_selected_objects');
  143. ksort($selected_objects);
  144. if ($selected_objects)
  145. {
  146. $datagrid->clear();
  147. foreach ($selected_objects as $selected_object)
  148. {
  149. $datagrid->addItem( (object) $selected_object );
  150. }
  151. }
  152. $win = TWindow::create('Results', 0.6, 0.6);
  153. $win->add($datagrid);
  154. $win->show();
  155. }
  156. // Gostaria de obter todos os dados da coluna Registrations Ids
  157. public function tratarRegistrationIds($param)
  158. {
  159. // TRATAMENTO DOS DADOS DA LISTA (DATAGRID), COLUNA REGISTRATION IDS
  160. $data = $this->form->getContainer();
  161. var_dump($data);
  162. }
  163. }
  164. ?>
</your>
EA

Também tentei usar o comando $data = $this->datagrid->getItems();
Mas ainda assim não consigo pegar uma coluna da datagrid, porém quando uso o var_dump os dados estão lá.
EA

Problema resolvido.
Eu precisava usar um foreach para pegar os dados e usar o datagrid->getItems();
Valeu, segue solução

 
  1. <?php
  2. $data = $this->datagrid->getItems();
  3. if($data)
  4. {
  5. foreach ($data as $registro)
  6. {
  7. $teste = $registro->registration_id;
  8. echo $teste;
  9. }
  10. }
  11. ?>