8

可変数の列とデータ スクローラーを含むデータ テーブルがあります。サーバー側の並べ替えを有効にするにはどうすればよいですか? ユーザーが列ヘッダーをクリックして起動することをお勧めします。

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

並べ替えを実行するためのメソッドが既に Bean にあります。

public void sort(int column)
4

5 に答える 5

6

結局手動でやりました。ヘッダーのテキスト タグにサポート タグを追加します。

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

昇順/降順の矢印を取得するために、css クラスを追加しました。

<h:outputText value="#{column}" styleClass="#{pageDataModel.getOrderClass(idx)}" >
  <a4j:support event="onclick" action="#{pageDataModel.sort(idx)}"
               eventsQueue="instancesQueue"
               reRender="instanceList,instanceListScroller"/>
</h:outputText>
于 2008-09-25T20:46:33.543 に答える
1

データモデルは「変更可能な」インターフェースを実装する必要があります。

datatableは、サーバーサイドのmodify()並べ替えとフィルタリングを行うためのメソッドを呼び出します。

于 2010-05-14T14:48:03.067 に答える
1

ここに、このソリューションに対するかなりエレガントなソリューションがあります。

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

このデモでは、タグの使用を避けています。

于 2010-07-15T14:52:37.460 に答える
0

リストを取得するときにCollection.sort()を使用することはできませんか?

于 2008-11-14T09:32:57.750 に答える
0

「rich:columns」の「sortBy」プロパティを見てください。おそらくそれが探しているものです。 Richfaces リファレンス

于 2008-10-22T14:36:32.483 に答える