Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
carregar TMultiSearch onChange Olá pessoal! Como carregar um TMultiSearch com uma função onChange? tenho que carregar uma lista de aplicação no TMultiSearch, isso depois de selecionar um empreendimento numa TDBCombo. tentei usar as duas formas, deu erro... TForm::sendData('form_liberacao', $objeto); TMultiSearch::reload('form_liberacao', 'aplicacao_id', $options); segue a função... ...
BI
carregar TMultiSearch onChange  
Olá pessoal!

Como carregar um TMultiSearch com uma função onChange?

tenho que carregar uma lista de aplicação no TMultiSearch, isso depois de selecionar um empreendimento numa TDBCombo.

tentei usar as duas formas, deu erro...
TForm::sendData('form_liberacao', $objeto);
TMultiSearch::reload('form_liberacao', 'aplicacao_id', $options);

segue a função...
  1. <?php 
  2.     public static function onChange($param)
  3.     {
  4.         if (!empty($param['empreendimento_id'])){
  5.             $objeto = new StdClass;
  6.             
  7.             TTransaction::open('sqlserver');
  8.             $criteria = new TCriteria;
  9.             $criteria->add(new TFilter('empreendimento_id''='$param['empreendimento_id']));
  10.             $criteria->add(new TFilter('status''='1));
  11.             
  12.             $repository = new TRepository('ViewEmpreendimentos');
  13.             $aplicacaos $repository->load($criteria);
  14.             
  15.             $options = array();
  16.             $options[] = '' ;
  17.             
  18.                 foreach ($aplicacaos as $aplicacao){
  19.                     $options[$aplicacao->id] = $aplicacao->aplicacao;
  20.                 }
  21.             $objeto->aplicacao_id $options;
  22.             
  23.             TForm::sendData('form_liberacao'$objeto);            
  24.             //TMultiSearch::reload('form_liberacao', 'aplicacao_id', $options);
  25.         }
  26.     }
  27. ?>


Fico grato se alguem puder ajudar!

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (5)


NR

Você pode fazer via javascript:
  1. <?php
  2. foreach ($aplicacaos as $aplicacao){
  3.     $options[] = (object)['id'=>$aplicacao->id,'text'=>$aplicacao->aplicacao];
  4. }
  5. TScript::create("$('[name=aplicacao_id]').select2({data: " json_encode($options)."}).val('').change();");
  6. ?>
BI

Obrigado pela ajuda!

O código funcionou, porem deixa eu selecionar apenas um item, é como se ele tivesse limitado com isso setMaxSize(1)
tem solução?
NR

  1. <?php
  2. TScript::create("$('[name=aplicacao_id]').select2({multiple: true, data: " json_encode($options)."}).val('').change();");
  3. ?>
BI

Valeu parceiro!
Sou péssimo com javascript...
O código funcionou e consegui extrair os dados desse campo.

Agora o problema é selecionar os valores dentro do TMultiSearch numa eventual edição dos dados.
Ex. eu gravei os dados no BD, depois ao enviar esses dados para o formulário para edição, como fazer o setValue?
tentei algumas coisas mas não deu certo.

Desde já agradeço sua ajuda!
BI

... Então, estava utilizando esse componente na versão anterior do Adianti, depois que atualizei o Framework o método que vc indicou parou de funcionar.

  1. <?php
  2.   foreach ($aplicacaos as $aplicacao){
  3.        $options[] = (object)['id'=>$aplicacao->id,'text'=>$aplicacao->aplicacao];
  4.   }
  5.   TScript::create("$('[name=aplicacao_id]').select2({multiple: true, data: " json_encode($options)."}).val('').change();");
  6. ?>