Facing new challenges everyday

Executando uma action ao clicar em uma linha de um rich:dataTable

September 29th, 2007

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();

DZoneGoogle BookmarksFacebookEvernoteLinkedInDeliciousShare

3 Comments »

  1. Arisson Leal says

    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 | #

  2. rogerio says

    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 | #

  3. sousagomide says

    :lol: hemrem, funcionou de prima. Tú é mesmo o cara.

    September 14th, 2009 | #

Leave a comment

:mrgreen: :neutral: :twisted: :shock: :smile: :???: :cool: :evil: :grin: :oops: :razz: :roll: :wink: :cry: :eek: :lol: :mad: :sad:
*

RSS feed for these comments. | TrackBack URI

Visitors Around the World

Polls

How Is My Site?

View Results

Loading ... Loading ...

Categories

Meta

Links

hosted by easy2use.net