Enviar dados para Field List no método onEdit Olá pessoal, Se for para enviar os dados diretamente ao campos do field list é tranquilo, mas no caso de um TCombo que depende dos dados de um TDBCombo, não consegui fazer funcionar, pois os dados são inseridos por meio do método addDetail do Field List e este não aciona o método onChange. tentei pegar o nome dos campos da Field List para acionar o onChange manualmente, mas tbm não c...
BI
Enviar dados para Field List no método onEdit  
Olá pessoal,
Se for para enviar os dados diretamente ao campos do field list é tranquilo,
mas no caso de um TCombo que depende dos dados de um TDBCombo, não consegui fazer funcionar,
pois os dados são inseridos por meio do método addDetail do Field List e este não aciona o método onChange.
tentei pegar o nome dos campos da Field List para acionar o onChange manualmente, mas tbm não consegui.

 
  1. <?php
  2. public function onEdit( $param )
  3. {
  4. try
  5. {
  6. if (isset($param['key']))
  7. {
  8. $key = $param['key']; // get the parameter $key
  9. TTransaction::open('sqlserver'); // open a transaction
  10. $object = new liberacao($key); // instantiates the Active Record
  11. if ($object->status == 1){
  12. $action = new TAction(array('liberacaoList','onReload'));
  13. new TMessage('Error','PES Aprovado! Não é possivel fazer alteração!', $action);
  14. die();
  15. }elseif($object->status == 2){
  16. $action = new TAction(array('liberacaoList','onReload'));
  17. new TMessage('Error','PES Cancelado! Não é possivel fazer alteração!', $action);
  18. die();
  19. }
  20. $data = explode(' ', $object->ini_previsto);
  21. $data2 = explode(' ', $object->fin_previsto);
  22. $object->ini_previsto = $data[0];
  23. $object->fin_previsto = $data2[0];
  24. $object->hora_ini = substr($data[1], 0,5);
  25. $object->hora_fin = substr($data2[1], 0,5);
  26. //-------------------------------------------------------------------
  27. $items = PesAplicacao::where('pes_id', '=', $key)->load();
  28. $this->list_apl->addHeader();
  29. if ($items)
  30. {
  31. foreach($items as $item )
  32. {
  33. $apl = new Aplicacao($item->aplicacao_id);
  34. $detail = new stdClass;
  35. $detail->list_empreendimento = $apl->empreendimento_id;
  36. //este campo depende do onChange para carregar a lista.
  37. $detail->list_aplicacao = $apl->id;
  38. $teste = $this->list_apl->addDetail($detail);
  39. }
  40. $this->list_apl->addCloneAction();
  41. }
  42. else
  43. {
  44. //$this->fieldlist->addHeader();
  45. $this->list_apl->addDetail( new stdClass );
  46. $this->list_apl->addCloneAction();
  47. }
  48. $this->form->setData($object); // fill the form
  49. TTransaction::close(); // close the transaction
  50. }
  51. else
  52. {
  53. $this->form->clear();
  54. }
  55. }
  56. catch (Exception $e) // in case of exception
  57. {
  58. new TMessage('error', $e->getMessage()); // shows the exception error message
  59. TTransaction::rollback(); // undo all pending operations
  60. }
  61. }
  62. public static function onChange($param)
  63. {
  64. if (!empty($param['list_empreendimento'])){
  65. $empField = $param['_field_id'];//nome do field empreendimento
  66. $vet = explode('_', $empField);// apenas o codigo
  67. $empId = $param['_field_value'];//ID do campo empreendimento
  68. $apl_name = "list_aplicacao_".$vet[2];//nome do field aplicacao
  69. TTransaction::open('sqlserver');
  70. $criteria = new TCriteria;
  71. $criteria->add(new TFilter('empreendimento_id', '=', $empId ));
  72. //$criteria->add(new TFilter('status', '=', 1));
  73. $repository = new TRepository('ViewEmpreendimentos');
  74. $aplicacaos = $repository->load($criteria);
  75. $options = array();
  76. foreach ($aplicacaos as $aplicacao){
  77. $options[$aplicacao->id] = $aplicacao->aplicacao;
  78. }
  79. TScript::create("$('#{$apl_name}').html('')");
  80. //carrega a combo
  81. TCombo::reload('form_liberacao', $apl_name, $options, true);
  82. TTransaction::close();
  83. }
  84. }
  85. ?>

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

A classe TFieldList é filha de TTable e a função addDetail retorna a linha acrescentada a essa tabela. Assim você consegue capturar os elementos de cada linha:
 
  1. <?php
  2. // onEdit
  3. $row = $this->list_apl->addDetail($detail); // retorna linha da tabela
  4. $componente = $row->get(0)->get(0); // o primeiro get(0) vai retornar o primeiro elemento da linha(td). Depois, com mais um get(0) capturamos o primeiro elemento dessa td, que no caso será o seu primeiro componente adicionado ao fieldlist.
  5. // supondo que $componente = combo
  6. $componente->addItems($seu_array);
  7. ?>
BI

Deu certo, muito obrigado!
RH

Como definir quantidade máxima de linhas TFieldList (addCloneAction)