我有一个10列的数据表,以4:4:2的方式分组。现在,前两个组(4个)是固定的,而最后2个组可以根据条件添加到任何组(一次或两个)。 有没有办法为列设置索引,以便可以根据条件对它们进行排序? 我看到Primefaces使用drag n drop重新排序给出了我要查找的结果类型,除了我希望重新排序在表格显示之前可编程和设置。
答案 0 :(得分:1)
我基本上遇到了同样的问题:允许用户重新排列列后,很容易将排列保存到cookie中,但是如何在一天之后恢复订单?
据我所知,这方面没有主要方法,但可以用一点点javascript攻击。 (我试过使用primefaces 6.0)
1)为所有列提供唯一的styleClasses,例如:
styleClass="mystyle col0"
styleClass="mystyle col1"
styleClass="mystyle col2"
...
2)将styleClass字符串转换为有效的css选择器,并将所需的列顺序存储为这些列的顺序,如:
".mystyle.col2,.mystyle.col0,.mystyle.col1"
将其放入饼干中,或存储并随意取回。
3)编写一个javascript函数,将单元格重新排列为所需的顺序:
function reorder() {
var o = getCookie('orderString');
var a = o.split(",");
for (var i = a.length - 1; i >= 0; i--) {
$(a[i]).each(function() {
$(this).prependTo($(this).parent())
});
}
}
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length === 2)
return parts.pop().split(";").shift();
}
(不要使用EL表达式从支持bean中取回订单字符串,因为它会对页面呈现进行评估,因此如果用户再次重新排列列,则不会更新。)
4)每次需要时执行reorder()。
你肯定需要在页面加载时使用它:
$(document).ready(function() {
reorder();
});
但也有分页事件,所以添加如下内容:
<p:ajax event="page" oncomplete="reorder();" />
(也许有时我还没见过。)