PrimeFaces:在Javascript中获取当前列排序顺序

时间:2013-01-30 10:43:33

标签: java javascript jsf primefaces datatable

我正在尝试在用户重新排序时获取PrimeFaces数据表中当前列的顺序。由于服务器端事件不提供任何参数,我决定使用JavaScript处理程序来执行此操作。

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

“glossary”是我的数据表小部件变量。问题是:我现在如何以当前顺序检索列名?请注意,我不是在谈论表格数据排序,而是关于列在表格中出现的当前顺序(从左到右) - 当然可能会改变,因为“draggableColumns”设置为true。

感谢您的任何建议和问候 帕斯卡

2 个答案:

答案 0 :(得分:3)

首先在colReorder上定义datatable AJAX事件:

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

onColReorder方法中,使用UIViewRoot#findComponent()方法按ID查找数据表。找到DataTable对象后很容易。使用getColumns()方法获取onColReorder()中的列列表:

FacesContext fc = FacesContext.getCurrentInstance();
DataTable myDatatable = (DataTable) fc.getViewRoot().findComponent("your_datatable");
List<UIColumn> columns = myDatatable.getColumns();

答案 1 :(得分:0)

var th =$(myTableWidgetVar.jqId).find('.ui-state-active');

返回id为myTableId:myColumnId的邮件,因此您知道哪个列已启用排序。

您现在可以阅读三角形组件:

th.find( 'UI可排序列图标');

并检查它已定义的类:

  • 'ui-icon-triangle-1-n'用于排序升序

  • 'ui-icon-triangle-1-s'用于排序降序

如果您使用LazyDataModel,则会对排序顺序进行服务器回调。