关于dorado的动态加载列

  • Post author:
  • Post category:其他


根据登录用户的不同对表格的列做不同的排序,比如表格有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 版权协议,转载请附上原文出处链接和本声明。