Problemas com extendedDataTable richFaces

3 respostas
joede.fadel

Quando eu altero alguma condição na sql ele altera na extendedDataTable e exibe normal o problema é quando eu vou trocar a página ou mudar o ordem de exibição do resultados o valor volta a se o original que estava antes de eu alterar o valor

<tr>
                                        <td><h:inputText id="idP" value="#{protocolo.idP.value}">
                                                <a4j:support actionListener="#{protocolo.protocolosId}" reRender="listProtocolo" event="onchange" />
                                        </h:inputText></td>
                                        <td><h:selectOneMenu value="#{protocolo.status}">
                                                <f:selectItem itemValue="" itemLabel="Todos" />
                                                <f:selectItems value="#{protocolo.statusList}"/>
                                                <a4j:support   event="onclick" actionListener="#{protocolo.protocolosStatus}" reRender="listProtocolo" status="stt" />
                                        </h:selectOneMenu></td>
                                        <td><h:inputText id="empresa_id" value="#{protocolo.empresa_id.value}">
                                                <a4j:support actionListener="#{protocolo.protocolosRazaoSocial}" reRender="listProtocolo" event="onchange" status="stt" />
                                        </h:inputText></td>
                                        <td>
                                            <h:inputHidden value="#{usuarios.nomeUs}" binding="#{protocolo.criadoPor}" />
                                            <a4j:commandButton value="Exiber Meus Protocolos" actionListener="#{protocolo.protocolosUsuario}" reRender="listProtocolo,rs,crp,sttss,ds" />
                                        </td>
                                    </tr>




<r:extendedDataTable value="#{protocolo.proResult}" var="pro" rows="10" id="listProtocolo"
                                sortMode="multi" height="434px">

                                    <r:column width="43px">
                                        <h:graphicImage value="imagens/#{pro.status}.gif" />
                                    </r:column>
                                    <r:column width="44px">
                                        <f:facet name="header">
                                            <h:outputText value="Código" />
                                        </f:facet>
                                        <h:outputText value="#{pro.protocolo_id}" />
                                    </r:column>
                                    <r:column width="65px">
                                        <f:facet name="header">
                                            <h:outputText value="Emissão" />
                                        </f:facet>
                                        <h:outputText value="#{pro.emissao}">
                                            <f:convertDateTime type="date" dateStyle="short" locale="pt,BR"
                                                               timeZone="America/Sao_Paulo" pattern="dd/MM/yyyy" />
                                        </h:outputText>
                                    </r:column>
                                    <f:facet name="footer">
                                        <r:datascroller id="ds" renderIfSinglePage="true"></r:datascroller>
                                    </f:facet>
                                </r:extendedDataTable>
no bean
public void protocolosStatus(ActionEvent event) {
        if (!getStatus().equals("")) {
            setProResult(ResultSupport.toResult(prD.protocoloStatus(getStatus())));
        } else {
            setProResult(ResultSupport.toResult(prD.protocolos()));
        }

    }

    public void protocolosUsuario(ActionEvent event) {
        if (!getCriadoPor().getValue().toString().equals("")) {
            setProResult(ResultSupport.toResult(prD.protocoloUsuario(getCriadoPor().getValue().toString())));
        } else {
            setProResult(ResultSupport.toResult(prD.protocolos()));
        }

    }

    public void protocolosId(ActionEvent event) {
        if (!getIdP().getValue().toString().equals("")) {
            setProResult(ResultSupport.toResult(prD.protocoloIdProtocolo(new Integer(getIdP().getValue().toString()))));
        } else {
            setProResult(ResultSupport.toResult(prD.protocolos()));
        }

    }

    public void protocolosRazaoSocial(ActionEvent event) {
        if (!getEmpresa_id().getValue().toString().equals("")) {
            setProResult(ResultSupport.toResult(prD.protocoloRazaoSocial(getEmpresa_id().getValue().toString())));
        } else {
            setProResult(ResultSupport.toResult(prD.protocolos()));
        }

    }


    }

3 Respostas

townray

Estou com o mesmo problema, mas no meu caso (como não mudo os dados) acontece quando eu agrupo. Daí quando vou fazer outra operação qualquer como por exemplo clicar no + para expandir ou retrair os grupos, eles desagrupa e tudo volta no estado “um”. Alias estou com um outro problema além deste, quando a dataTable é exibida pela primeira vez na tela, o ícone de “ajax” fica na tela e só renderiza a table mesmo quando eu dou um F5.

joede.fadel

Poste o seu código para eu dar um olhada

townray
<rich:extendedDataTable id="tbl"
                                            value="#{teste.lista}"
                                            var="obj"
                                            width="570px"
                                            height="270px"
                                            sortMode="Single"
                                            selectionMode="Multi">
                        <rich:column sortable="true"
                                     sortBy="#{obj.id}"
                                     filterBy="#{obj.id}"
                                     filterEvent="onkeyup"
                                     label="ID"
                                     sortOrder="ASCENDING">
                            <f:facet name="header">
                                <h:outputText value="ID"/>
                            </f:facet>
                            <h:outputText value="ID"/>
                        </rich:column>

                        <rich:column sortable="true"
                                     sortBy="#{obj.descricao}"
                                     filterBy="#{obj.descricao}"
                                     filterEvent="onkeyup"
                                     label="DESCRICAO"
                                     sortOrder="ASCENDING">
                            <f:facet name="header">
                                <h:outputText value="DESCRICAO"/>
                            </f:facet>
                            <h:outputText value="DESCRICAO"/>
                        </rich:column>
                    </rich:extendedDataTable>

Acho que ainda não da para usar, porque tem muita coisa faltando. Até queria saber onde e como eu faço para postar os “bugs” ou mudanças que em minha opinião seriam interessantes. Alguns exemplos, ao selecionar multiplas colunas usando SHIFT, você clica na primeira, clica em uma outra e sem desapertar o SHIFT clica em uma terceira “faixa” de seleção. O comportamento não é o esperado, ou melhhor, não é o mesmo do que temos hoje como padrão de seleções com SHIFT. Outro problema é que quando executamos um sort com a datatable agrupada, ela volta desagrupada. Não tem opção de “expand all” e “collapse all”. Os menus popup com as opções de agrupamento e colunas visiveis estão em inglês e eu não consegui alterar (não sei se foi incompetência minha). Quando não utilizamos um dos SKINs disponíveis no site mas sim um customizado, os ícones desse popup se distorcem.
Em minha aplicação, eu utilizo formulários a4j:form e nesse caso o componente não funciona como o do richfaces livedemo. Ele agrupa normalmente, mas quando eu faço um expand ou colapse, ele volta para o estado original (sem agrupamento). O redimensionamento de colunas também está com muitos bugs, hora ele executa, hora não, hora o HEADER fica inalterado e somente as colunas sofrem a alteração, e por aí afora.
A intenção do componente é muito boa, para mim seria o melhor componente do rich (o mais utilizado) porém precisamos ajudar a melhorá-lo. Eu gostaria de começar fazer isso, pelo menos enviando os possíveis problemas que ele apresenta, mas como disse não sei como fazer, tentei procurar no site mas aparece uma tela de que está indisponível.

editado
OBS: também acho que a documentação está um pouco pobre. Não entendi o que é o componentState… ele difere em que do tableState? O que faz o rowKeyVar? E o stateVar que tem em vários componente?

OBS2: acabei de testar o redimensionamento de colunas. O redimensionamento do site “richfaces livedemo” aqui no firefox 3.0.11 funciona normal, já o do meu sistema não funciona; a divisão fica toda bagunçada, como eu disse hora o cabeçalho muda e as colunas não, hora o inverso, entre outras coisas. Já no IE versão 7.0.5730.13 funciona tanto no livedemo como no meu sistema. Outras versões ou tipos de browser não testei porque não tenho instalado.

Criado 21 de fevereiro de 2009
Ultima resposta 1 de jul. de 2009
Respostas 3
Participantes 2