GE
usando o FormDynamicFilterView
Fechado
Oi Galera.
Usei o exemplo desta pagina:
www.adianti.com.br/framework_files/tutor/index.php?class=FormDynamic
para criar campos TCombos dinâmicos.
Conforme o resultado do primeiro, monto o segundo e conforme o resulta do segundo monto o terceiro.
O problema que estou enfrentando é na hora do onEdit, eu não consigo deixar eles selecionados com os dados do banco.
Alguem já enfrentou esse problema?
Usei o exemplo desta pagina:
www.adianti.com.br/framework_files/tutor/index.php?class=FormDynamic
para criar campos TCombos dinâmicos.
Conforme o resultado do primeiro, monto o segundo e conforme o resulta do segundo monto o terceiro.
O problema que estou enfrentando é na hora do onEdit, eu não consigo deixar eles selecionados com os dados do banco.
Alguem já enfrentou esse problema?
Pela logica vc precisará dar o reload na combo antes de enviar ao form pelo sendData do dentro onEdit mais ou menos isso ae...
Sim. Já tinha tentado isso. primeira fiz chamando as funçoes staticas que geram os TCombos e não funcionou.
Depois tentei gerar o código dentro do metodo onEdit conforme código abaixo:
Mas continua não deixando selecionado os valores, mesmo atribuindo um valor valido ao objeto com o respectivo nome do form e chamando a funcao setData($object)
TTransaction::close();//é nessa hora que executa a query
Tem que ser executado antes do TCombo::reload('form_Ticket', 'codigo_cadastro_origem', $options); uma outra coisa vc não precisa definir $options = array(); antes?
Sds
Oi Felipe.
Não precisa.
Na tela ele chega a montar todos os selects, conforme os parametros utilizados, só não está atribuindo o valor.
Olhando o código eu verifiquei que $object é uma classe do tipo Ticket e os atributos das TCombo são do tipo Pessoa.
Vou tentar transformar o $object em uma new StdClass e passar um objeto nao vinculado a uma classe.
Então ele está carregando a combo mais não esta selecionando o valor do id é isso?
isso
Será que não é porque a tela não está renderizada ?
passando assim acho que vai continuar o erro.
TForm::sendData('form_Ticket', $object);
e se salvar na seção e colocar como setValue ?
Não sei...
Tentei varias coisas, sabe se tem como capturar o compomente atravez do $this->form->getFormByName
para que eu tenha acesso ao setValue do componente em especifico?
botei as imagens aqui para ver como ficou.
gustavoemmel.blogspot.com.br/2015/07/acessando-componentes.html
Tem como minimizar esse projeto e me enviar para eu testar ?
vou atualizar os arquivos no github e a noite eu passo os links
https://github.com/GustavoEmmel/Atividades
Boa tarde,
Acredito que na hora de enviar os dados para a tela está enviando o nome que está registrado no banco e não o id.
É registrado no banco o id ou o nome?
Oi João.
Eu guardo o ID,
acredito que estou enviando para a tela nesses momentos:
E como está a configuração do campo abaixo do form dentro do construtor? Tem como postar o código.
Provavelmente você já verificou se está chegando o id do banco, então pode ser algo no form.
o id do banco esta chegando sim.
veriquei atravez de var_dump do object e de print do atributo do objetct
o codigo eh esse:
https://github.com/GustavoEmmel/Atividades/blob/master/atividades/app/control/tickets/TicketForm.class.php
Aqui estou criando os campos no construtor:
ainda tenho os metodos staticos para alterar as TCombos:
ps. A tag code esta funcionando no forum?
Gustavo
Olhando seu código parece que o valor retornado do key da combo é diferente de quando vc carrega a página, talvez seja por causa desta linha { $options [] = '--Selecione--';}, pode remover para testar, mas para confirmar dar um var_dump no objeto->combo no onSave e outro no objeto->combo do onEdit e compare acredito que ele está assumindo um index diferente.
Abraços
Oi. Tentei tirar o indice nulo do array com o --Selecione-- e a unica coisa que diferenciou é que veio mostrando o como selecionado o primeiro valor do TCombo.
Dei os var_dump no onSave e onEdit como vc disse assim:
var_dump($object->tipo_origens);
print '<br />';
var_dump($object->codigo_cadastro_origem);
print '<br />';
var_dump($object->solicitante_id);
print '<br />';
no onSave ele retorna assim:
string(1) "1"
string(1) "2"
string(2) "22"
no onEdit vindo da lista ele vem assim:
int(1)
int(2)
int(22)
então converti o tipo da variavel para string assim:
$object->tipo_origens = (string) $pessoa->origem;
$object->codigo_cadastro_origem = (string) $pessoa->codigo_cadastro_origem;
$object->solicitante_id = (string) $pessoa->pessoa_codigo;
E apesar do var_dump retornar assim:
string(1) "1"
string(1) "2"
string(2) "22"
ele continuou não setando o valor das combos.
Mas ele monta as combos certas. Eu inclusive tentei concatenar um ' selected' no indice do valor que eu queria que selecionasse mas nao rolou...
Gustavo
Realmente está difícil acredito que estamos deixar passar algo, porém eu contornaria esse problema com javascript assim
no OnEdit
TScript::create('$("select[name='list']").val('a');'); //ajustar o nome da combo e pegar o valor do objeto
Vou montar um exemplo criando essas condições para testar.
Então, consegui resolver o problema da seguinte maneira.
Criei outro método static para setar os valores nas combos.
Depois lá no onEdit, apos criar os TCombo, eu chamei essa funçao passando um array com os valores que gostaria de setar nas combos.
assim