根据登录用户的不同对表格的列做不同的排序,比如表格有id列、name列和age列,那么用户a比较喜欢看name列那么name列在页面加载好之后自动放到第一列,用户b喜欢看age列那么,用户b 进入页面的话,自动把age列放到第一位。
具体实现:
首先需要定义一张表,表信息需要包含:表格id,用户名,表格列的顺序。
表格id唯一确定的一张表,要唯一。
比如
表格id | 用户名 | 列顺序 |
---|---|---|
grid | a | name,id,age |
grid | b | age,id,name |
然后继承父类GenericObjectListener监听器,
@Component("userGridListener")
public class UserGridListener extends GenericObjectListener<DataGrid> {
static String sortColumns = "email_," +
"ename_," +
"administrator_," +
"mobile_," +
"cname_," +
"company_id_," +
"create_date_," +
"username_," +
"enabled_," +
"address_," +
"male_," +
"birthday_";
@Override
public boolean beforeInit(DataGrid dataGrid) throws Exception {
return true;
}
@Override
public void onInit(DataGrid grid) throws Exception {
List<Column> columns = grid.getColumns();
Column [] columnsArray = new Column[columns.size()];
String loginUserName = ContextHolder.getLoginUserName();
//todo 根据用户名查询对应的列的顺序
//sortColumns是查询出来的列顺序
String[] split = sortColumns.split(",");
for (int i = 0;i<split.length;i++) {
String s = split[i];
for (Column column:columns) {
if (column.getName().equals(s)) {
columnsArray[i] = column;
break;
}
}
}
columns.clear();
columns.addAll(Arrays.asList(columnsArray));
}
}
最后配置表格属性listener:
效果:
没有排序之前:
排序之后:
demo地址:
https://github.com/294033186/bdf2-project
参考链接:
http://wiki.bsdn.org/pages/viewpage.action?pageId=7897097
版权声明:本文为weixin_42619248原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。