3

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

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

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

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

4

2 回答 2

3

首先定义colReorderAJAX 事件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');

用 id 返回你myTableId:myColumnId,所以你知道哪一列启用了排序。

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

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

并检查它定义了哪个类:

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

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

如果您使用LazyDataModel.

于 2013-01-30T13:26:37.003 回答