Executando uma action ao clicar em uma linha de um rich:dataTable
Recentemente estava quebrando a cabeça com um código que permitisse a execução de um método no backingbean ao clicar em uma linha de um rich:dataTable, para resolver o problema criei o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <rich:dataTable width="100%" rows="15" cellpadding="3" cellspacing="1" border="0" rendered="#{! empty bean.clientes}" var="cliente" value="#{bean.clientes}" onRowMouseOver="this.className = 'onRowMouseOver';" onRowMouseOut="this.className = 'onRowMouseOut';" onRowClick="this.cells[0].firstChild.onclick();"> <f:facet name="header"> <rich:columnGroup> <rich:column> <h:outputText value="Nome" /> </rich:column> <rich:column> <h:outputText value="Data de Nascimento" /> </rich:column> <rich:column> <h:outputText value="Endereço" /> </rich:column> </rich:columnGroup> </f:facet> <rich:column> <a4j:commandLink action="#{bean.exibirDadosCliente}" status="status" reRender="painelDadosCliente" style="display: none;"/> <h:outputText value="#{cliente.nomeCliente}" /> </rich:column> <rich:column> <h:outputText value="#{cliente.dataNascimento}" /> </rich:column> <rich:column> <h:outputText value="#{cliente.endereco.logradouro}" /> </rich:column> </rich:dataTable> |
A idéia é basicamente colocar um link invisível na primeira coluna do dataTable, antes de qualquer outro componente, e no evento onRowClick executar o código JavaScript this.cells[0].firstChild.onclick();
Usando o dataTable com o da maneira que você fez os meus componentes do richfaces deixaram de funcionar na página em que a action deu o foward, isso apenas no Firefox.
Existe alguma maneira de contornar esse erro ?
April 11th, 2008 | #
Cara, o que pode estar acontecendo é que o onclick() não deve estar funcionando no Firefox, neste caso vc teria que usar click() quando a página estiver sendo visualizada neste browser.
April 17th, 2008 | #
September 14th, 2009 | #