Opa pessoal
eu to precisando de carregar uma combo dentro de uma grid, sendo que o valor da combo será setado de acordo com o valor que vinher de um campo da linha.
Eu tentei fazer assim:
<f:verbatim>
<script>
<![CDATA[
var combo = #{rich:element('usuarioPapel')};
for (int i = 0; i < combo.length; i++) {
if (combo.options[i].value == "#{row.magistradoSubstitutoSessoa}") {
combo.options[i].selected = "true";
break;
}
}
]]>
</script>
</f:verbatim>
bom pessoal consegui resolver. Nem que eu virasse essa madrugada aqui na empresa, mas eu ia ter que achar uma solução.
Analisando o código montado pelo richfaces na página eu descobri que cada item da combo gerada recebia um valor de 0 a n, onde zero é o primeiro item da combo e n o último elemento.
Então, usando javascript, carreguei a combo em uma variável usando uma função do richfaces e pecorri toda a combo até achar na combo o valor que vinha na linha da do rich:datatable.
Eu criei um método que pegava a linha e encontrava na lista da combo a posição correspondente para então retornar seu índice e setar via javascript o item correspondente ao índice retornado.
Acho que consegui explicar. :s
javascript
<script type="text/javascript" >
var combo = #{rich:element('magistradoSubstituto')};
for (i = 0; i != combo.length; i++) {
if (combo.options[i].value == "#{sessaoComposicaoOrdemHome.posicaoItemSubstituto(row.magistradoSubstitutoSessao)}") {
combo[i].selected = true;
break;
}
}
</script>
método da classe
public Integer posicaoItemSubstituto(PessoaMagistrado row){
if (row == null)
return null;
int i = 0;
for(i = 0; i < listaSubstituto.size(); i++){
if (listaSubstituto.get(i).getIdUsuario().equals(row.getIdUsuario()))
return i;
}
return null;
}
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: