Esconder linha de tabela com combo e A4J

4 respostas
L
Olá pessoal, Estou com um probleminha. Tenho uma página com um formulário. Os campos desse formulário estão dentro de uma tabela. Em um das linhas, tenho um combo. Logo abaixo, tenho outras das linhas. Preciso fazer com que, ao mudar um valor do combo, uma linha seja mostrada e a outra escondida. O problema é: após o evento onchange, a linha que estava escondida não é renderizada logo abaixo da linha do combo. Ela está sendo renderizada acima da tabela! Alguém sabe o que pode estar contencendo, ou existe uma outra maneira de fazer isso? Segue o código abaixo.
<table>
 <tr> 
  <td>Combo:</td> 
  <td><h:selectOneMenu value="#{bean.id}"> 
   <f:selectItem itemLabel="tipo 1" itemValue="1" /><f:selectItem itemLabel="tipo 2" itemValue="2" /> 
   <a4j:support event="onchange" action="#{bean.changeCombo}" reRender="outPanel1,outPanel2"></a4j:support> 
   </h:selectOneMenu></td> 
  </tr> 
 <a4j:outputPanel id="outPanel1"><h:panelGroup id="panel1" rendered="#{bean.showPanel1}"> 
  <tr><td>Panel1:</td><td>Dados Panel1:</td></tr></h:panelGroup></a4j:outputPanel> 
   <a4j:outputPanel id="outPanel2"><h:panelGroup id="panel2" rendered="#{bean.showPanel2}">
   <tr><td>Panel2:</td><td>Dados Panel2:</td></tr></h:panelGroup></a4j:outputPanel></table>
public String changeCombo() { 
  this.showPanel1 = !this.showPanel1 ; 
  this.showTabela = !this.showTabela; 
return null;}

Obrigada.

4 Respostas

Leozin

eu nao entendi direito o que tu quer fazer…

ma faz o seguinte: coloca no teou a4j:outputPanel a propriedade ajaxRendered=“true” e veja se ele corrige

L

Oi leozin,

Não funcionou não.

Vou tentar explicar de novo: Eu tenho uma tabela. Em cada linha, eu tenho a descrição e um campo de formulário (é um formulário de cadastro). Em uma linha eu tenho um campo cambo. Quando selecione o valor 1, eu quero que apareça, logo abaixo, uma nova linha da tabela. E caso selecione outro valor, quero que uma outra linha apareça. Isso via ajax.

Eu já fiz um teste sem tabela, com um panel, e quando clicava num checkbox, eu escondia ou mostrava e funcionava direitinho. O problema que está ocorrendo é que quero mostrar uma linha da tabela (tr que está dentro do panel) e ao invés de aparecer na sequencia da linha do combo, está aparecendo no topo da página, antes da tabela!

Eu estou tentando fazer desse jeito, mas não sei se existe uma maneira diferente/melhor de fazer isso!

Espero que eu tenha conseguido explicar agora! :smiley:

Obrigada!
[]s

spycall

Você está colocando “TR” e “TD” dentro de um “<a4j” isso geralmente dá problemas, tente colocar os

L

oi spycall

Realmente não funciona. Tentei colocar os verbatin e também não funcionou.
Resolvi mudar o layout da página e fiz de um jeito que já tinha funcionando, utilizando checkbox com support ajax no lugar do combo.

Obrigada!

Criado 12 de março de 2008
Ultima resposta 13 de mar. de 2008
Respostas 4
Participantes 3