Pergunta

Eu tenho uma tabela de dados com um número variável de colunas e um scroller de dados. Como posso ativar a classificação do lado do servidor? Eu prefiro que ele seja demitido pelo usuário clicar no cabeçalho da coluna.

<rich:datascroller for="instanceList" actionListener="#{pageDataModel.pageChange}"/>
<rich:dataTable id="instanceList" rows="10" value="#{pageDataModel}"
                var="fieldValues" rowKeyVar="rowKey">
  <rich:columns value="#{pageDataModel.columnNames}" var="column" index="idx">
    <f:facet name="header">
      <h:outputText value="#{column}"/>
    </f:facet>          
    <h:outputText value="#{classFieldValues[idx]}" />
  </rich:columns>
</rich:dataTable>

Já tenho um método no feijão para a execução do tipo.

public void sort(int column)
Foi útil?

Solução

Eu acabei fazendo isso manualmente. I adicionando uma tag suporte à tag texto do cabeçalho, assim.

<h:outputText value="#{column}">
  <a4j:support event="onclick" action="#{pageDataModel.sort(idx)}"
               eventsQueue="instancesQueue"
               reRender="instanceList,instanceListScroller"/>
</h:outputText>

Para obter o ascendente / descendente setas, eu adicionei uma classe css.

<h:outputText value="#{column}" styleClass="#{pageDataModel.getOrderClass(idx)}" >
  <a4j:support event="onclick" action="#{pageDataModel.sort(idx)}"
               eventsQueue="instancesQueue"
               reRender="instanceList,instanceListScroller"/>
</h:outputText>

Outras dicas

Não é uma solução bastante elegante a esta solução aqui:

http://livedemo.exadel.com /richfaces-demo/richfaces/sortingFeature.jsf?tab=ex-usage

Esta demonstração evita usar a tag.

As suas necessidades datamodel para implementar a interface "modificável".

A tabela de dados vai chamá-lo de método modify() fazer serverside classificação e filtragem.

Tenha um olhar para a propriedade "sortBy" de "ricos: Colunas", talvez isso é o que você está procurando. Richfaces Referência

Cant você acabou de usar Collection.sort () quando você recuperar a lista?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top