Pessoal… estou com um probleminha… eu tenho uma dataTable do primeFaces e utilizo o filterBy para pesquisa de algumas informações… cada linha da minha tabela tem um checkBox …
O problema é… se eu marcar algum checkBox e depois tentar aplicar um filtro … o primeFaces apaga todas as minhas linhas selecionadas…
Alguem tem ideia de como eu posso resolver isso?
Muito Obrigado pessoal!!!
posta o codigo do seu XHTML e do Controller do seu grid
<h:form id="form" prependId="false">
<p:dialog header="#{msg['registro.requisicao']}"
id="Modal"
widgetVar="modalSheet"
closable="false"
resizable="false"
position="center"
showEffect="fade"
hideEffect="fade" style="width: auto; height: auto; min-width: 830px;">
<p:dataTable var="data"
value="#{controllerReg.DataModel}"
id="tabela"
paginator="true"
rows="10"
selection="#controllerReg.selected}"
emptyMessage="#{msg['nenhum']}">
<p:column selectionMode="multiple" style="text-align:center" />
<p:column headerText="#{msg['registro.requisicao.data']}"
sortBy="#{data.dg}" style="width:110px" filterBy="#{data.dg}">
<h:outputText value="#{data.dg}"/>
</p:column>
<p:column headerText="#{msg['registro.requisicao.numero']}"
sortBy="#{data.sh}" style="width:110px" filterBy="#{data.sh}">
<h:outputText value="#{data.sh}"/>
</p:column>
<p:column headerText="#{msg['registro.requisicao.valores']}"
sortBy="#{data.req}"
style="text-align:center;width:155px" filterBy="#{data.req}">
<h:outputText value="#{registro.requisicao.data.inicio}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column headerText="#{msg[registro.requisicao.data.fim']}"
sortBy="#{data.expire}"
style="text-align:center;width:145px" filterBy="#{data.expire}">
<h:outputText value="#{data.expire}">
<f:convertDateTime pattern="dd/MM/yyyy"></f:convertDateTime>
</h:outputText>
</p:column>
</p:dataTable>
E meu controller tem a variavel selected e seus respectivos get e set
a variavel selected é um array…
e qdo eu aplico o filtro de pesquisa na tabela essa variavel selected chega vazia… se eu nao aplico nenhum filtro eu consigo pegar a folha q esta selecionada no checkBox.
o filterby deve renderizar a tela novamente, com isso os valores alterados e assinalados devem se perder,
tente criar uma chamada ajax no onlick da caixa para manter seu estado selecionado.
Fabio
eu adicionei no meu dataTable o seguinte codigo
<p:ajax event="filter" listener="#controllerReg.loadNewSelectedSheet}" update="tabelaFolhas"/>
<p:ajax event="rowSelect" listener="#controllerReg.rowSelect}" update="tabelaFolhas"/>
<p:ajax event="rowUnselect" listener="#controllerReg.rowUnselect}" update="tabelaFolhas"/>
ele manteve as opçoes selecionadas… mas veio outro problema… no caso de eu desmarcar uma opção… o primeFaces me devolve a variavel selected vazia e neste caso ele esta desmarcando todas as seleçoes… e eu nao estou vendo uma forma de identificar qual foi a opção desmarcada pelo usuario.
entendi seu problema, no rowUnselect se voce der 1 sysout, o que aparece no terminal? aparece o numero da linha que foi desmarcada ou nulo?
Se eu nao utilizo o filtro… ele traz a linha q permaneceu selecionada… e se eu utilizar o filtro ele vem nulo.
[quote=jximenes][code]
<h:form id=“form” prependId=“false”>
<p:dialog header="#{msg['registro.requisicao']}"
id="Modal"
widgetVar="modalSheet"
closable="false"
resizable="false"
position="center"
showEffect="fade"
hideEffect="fade" style="width: auto; height: auto; min-width: 830px;">
<p:dataTable var="data"
value="#{controllerReg.DataModel}"
id="tabela"
paginator="true"
rows="10"
selection="#controllerReg.selected}"
emptyMessage="#{msg['nenhum']}">
<p:column selectionMode="multiple" style="text-align:center" />
<p:column headerText="#{msg['registro.requisicao.data']}"
sortBy="#{data.dg}" style="width:110px" filterBy="#{data.dg}">
<h:outputText value="#{data.dg}"/>
</p:column>
<p:column headerText="#{msg['registro.requisicao.numero']}"
sortBy="#{data.sh}" style="width:110px" filterBy="#{data.sh}">
<h:outputText value="#{data.sh}"/>
</p:column>
<p:column headerText="#{msg['registro.requisicao.valores']}"
sortBy="#{data.req}"
style="text-align:center;width:155px" filterBy="#{data.req}">
<h:outputText value="#{registro.requisicao.data.inicio}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column headerText="#{msg[registro.requisicao.data.fim']}"
sortBy="#{data.expire}"
style="text-align:center;width:145px" filterBy="#{data.expire}">
<h:outputText value="#{data.expire}">
<f:convertDateTime pattern="dd/MM/yyyy"></f:convertDateTime>
</h:outputText>
</p:column>
</p:dataTable>
[/code]
E meu controller tem a variavel selected e seus respectivos get e set
a variavel selected é um array…
e qdo eu aplico o filtro de pesquisa na tabela essa variavel selected chega vazia… se eu nao aplico nenhum filtro eu consigo pegar a folha q esta selecionada no checkBox.[/quote]
a linha 18 : selection="#controllerReg .selected}" ta errada é assim selection="#{controllerReg.selected}"
o problema poderia ser realmente esse, caso tenha algum problema poste novamente!
flw
Desculpe… foi problema qdo eu copiei e colei o codigo … acho q acabei apagando antes de postar… mas aqui no meu codigo esta da forma q vc sugeriu…
eu estou pensando q possa ser algo do proprio primeFaces isso…
estou com o mesmo problema teve sucesso na solução??
sysweb2
Outubro 15, 2014, 10:59am
#12
mesma coisa aqui, alguém conseguiu resolver isso ?