我正在尝试在用户重新排序时获取PrimeFaces数据表中当前列的顺序。由于服务器端事件不提供任何参数,我决定使用JavaScript处理程序来执行此操作。
function onColumnReorder(glossary) {
var sortedColumnNames = ...
}
“glossary”是我的数据表小部件变量。问题是:我现在如何以当前顺序检索列名?请注意,我不是在谈论表格数据排序,而是关于列在表格中出现的当前顺序(从左到右) - 当然可能会改变,因为“draggableColumns”设置为true。
感谢您的任何建议和问候 帕斯卡
答案 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
,则会对排序顺序进行服务器回调。