3

現在、ユーザーが列を並べ替えるたびに、PrimeFacesデータテーブルの列の現在の順序を取得しようとしています。サーバー側のイベントはパラメーターを提供しないため、JavaScriptハンドラーを使用することにしました。

function onColumnReorder(glossary) {
    var sortedColumnNames = ...
}

「用語集」は私のデータテーブルウィジェット変数です。質問は次のとおりです。現在の順序で列名を取得するにはどうすればよいですか?私はテーブルデータの並べ替えについて話しているのではなく、列がテーブルに表示される現在の順序(左から右)について話していることに注意してください。「draggableColumns」がtrueに設定されているため、もちろん変更される可能性があります。

アドバイスをありがとう、パスカルよろしくお願いします

4

2 に答える 2

3

最初colReorderにAJAXイベントを定義しますdatatable

<p:ajax event="colReorder" listener="#{myBean.onColReorder}"/>

メソッドで、onColReorderメソッドを使用してidでデータテーブルを検索しますUIViewRoot#findComponent()。オブジェクトを見つけたら、DataTableそれは簡単です。メソッドを使用して、次getColumns()の列のリストを取得しますonColReorder()

FacesContext fc = FacesContext.getCurrentInstance();
DataTable myDatatable = (DataTable) fc.getViewRoot().findComponent("your_datatable");
List<UIColumn> columns = myDatatable.getColumns();
于 2013-02-04T08:24:46.220 に答える
0
var th =$(myTableWidgetVar.jqId).find('.ui-state-active');

idmyTableId:myColumnIdでthを返すので、どの列で並べ替えが有効になっているかがわかります。

これで、三角形のコンポーネントを読むことができます。

th.find('。ui-sortable-column-icon');

そして、それが定義したクラスを確認します。

  • 'ui-icon-triangle-1-n'昇順で並べ替える

  • 'ui-icon-triangle-1-s'降順で並べ替える

を使用すると、並べ替え順序の変更時にサーバーのコールバックが発生しますLazyDataModel

于 2013-01-30T13:26:37.003 に答える