BAMS 二次开发文档

数据表格详解

发布时间 2015-03-04 16:15   浏览量()   收藏()

数据表格在信息系统中充当着很重要的角色,涉及列表展示的地方都会用到它,在BAMS中数据表格的设计就是个亮点,首先在jsp中编写java代码,输出html、css、js,然后通过dwr加载数据,回调js方法初始化表格。整个过程中,表格的各个部分都被抽象成了SysGrid对象的属性或者关联对象,对于java开发人员来说,非常直观方便。


一、数据表格功能区域


二、SysGrid定义详解

SysGrid bg = new SysGrid(request);//SysGrid共有5个构造方法,例如还可以 new SysGrid(request, "部门人员");
bg.setTableTitle("部门人员");//表格标题

//设置附加信息
bg.setQueryFunction("queryData"); //查询的方法名
bg.setDblFunction("dblCallback"); //双击列的方法名,又返回值,为列对象
bg.setDblBundle("primaryKey"); //双击列的绑定的列值

//定义并放入按钮
ArrayList<SysGridBtnBean> btnList = new ArrayList<SysGridBtnBean>();
btnList.add(new SysGridBtnBean("批量设置离职", "deletebatch()", "close.png"));
btnList.add(new SysGridBtnBean("批量设置名字拼音码", "setBatchPYM()", "pinyinmabatch.png"));
btnList.add(new SysGridBtnBean("导出EXCEL", "exportEmployee()", "exp_excel.gif"));
btnList.add(new SysGridBtnBean("打印信息", "print()", "printimg.png"));
bg.setBtnList(btnList);

//功能按钮也可以从数据库加载(带权限控制)
//bg.setBtnList(UtilTool.getGridBtnList(this.getServletContext(), request));


//定义并放入操作提示 方式一 从数据库加载提示信息(推荐)
bg.setHelpList(UtilTool.getGridTitleList(this.getServletContext(), request));

//定义并放入操作提示 方式二 手工设置
//ArrayList<SysGridTitleBean> helplist = new ArrayList<SysGridTitleBean>();
//helplist.add(new SysGridTitleBean("","双击查询权限信息,不包含角色权限"));
//helplist.add(new SysGridTitleBean("","查询包含角色权限的信息请点击图标"));
//bg.setHelpList(helplist);

//定义列方式一 从数据库加载列信息
//ArrayList<SysGridColumnBean> colList = UtilTool.getGridColumnList(UtilTool.getColumnShow(this.getServletContext(),"人员列表"));


//定义列方式二 手工设置列信息(推荐)
ArrayList<SysColumnControl> sccList = new ArrayList<SysColumnControl>();
sccList.add(new SysColumnControl("hrmEmployeeName", "姓名", 1, 1, 1, 0));
sccList.add(new SysColumnControl("hrmEmployeeCode", "工号", 1, 1, 1, 0));
sccList.add(new SysColumnControl("hrmDepartment.hrmDepName", "部门", 1, 2, 2, 0));
sccList.add(new SysColumnControl("hrmEmployeeSex", "性别", 1, 2, 1, 0));
sccList.add(new SysColumnControl("hrmEmployeeBirthday", "出生日期", 1, 2, 1, 0));
sccList.add(new SysColumnControl("hrmEmployeeInTime", "入职日期", 1, 2, 1, 0));
sccList.add(new SysColumnControl("hrmEmployeeActive", "员工状态", 1, 2, 1, 0));

//SysColumnControl为中转类,其中定义的数据最终被转入SysGridColumnBean。
ArrayList<SysGridColumnBean> colList = UtilTool.getGridColumnList(sccList);
//进行高级查询显示处理、列的样式处理、列的替换处理
for (int i = 0; i < colList.size(); i++) {
	SysGridColumnBean bc = colList.get(i);
	if (bc.isShowAdvanced() || bc.isShowColumn()) {
		if ("hrmEmployeeInTime".equalsIgnoreCase(bc.getDataName())) {
			DateType date = new DateType();//定义高级查询展示类型
			bc.setColumnTypeClass(date);
			bc.setColumnStyle("padding-left:15px;");
		}
		if ("hrmEmployeeBirthday".equalsIgnoreCase(bc.getDataName())) {
			DateType date = new DateType();//定义高级查询展示类型
			bc.setColumnTypeClass(date);
			bc.setColumnStyle("padding-left:15px;");
		}
		if ("hrmEmployeeCode".equalsIgnoreCase(bc.getDataName())) {
			bc.setColumnStyle("padding-left:15px;text-align: left");
		}
		if ("hrmEmployeeSex".equalsIgnoreCase(bc.getDataName())) {
			SelectType select = new SelectType(EnumUtil.HRM_EMPLOYEE_SEX.getSelectAndText("-1,-请选择人员性别-"));//定义高级查询展示类型
			select.setCustomerFunction(new String[] { "onchange=\"queryData();\"" });
			bc.setColumnTypeClass(select);//设置展示类型
			bc.setColumnReplace("repleaSex");//替换列的展示或功能
			bc.setColumnStyle("text-align:center;");//增加列的样式
		}

		if ("hrmEmployeeActive".equalsIgnoreCase(bc.getDataName())) {
			SelectType select = new SelectType(EnumUtil.SYS_ISACTION.getSelectAndText("-1,-请选择是否有效-"));
			select.setCustomerFunction(new String[] { "onchange=\"queryData();\"" });
			bc.setColumnTypeClass(select);

			bc.setColumnReplace("repAction");
		}
	}
}

bg.setColumnList(colList);//放入列的定义
//设置列操作对象
bg.setShowProcess(true);//默认为false 为true请设置processMethodName
bg.setProcessMethodName("createProcessMethod");//生成该操作图标的js方法,系统默认放入数据行对象

//设置图片显示信息
//bg.setImgShowNum(6);//不指定默认5个
bg.setImgShowUrl("hrmEmployeeImageInfoId");//显示img的属性字段,没有填写-1
bg.setImgShowText("hrmEmployeeName");
bg.setImgNoDefaultPath(absPath + "/images/noimages/employee.png");//可以不指定,系统采用默认暂无图片
bg.setImgheight("64");//不设置为自动
//开始创建
out.print(bg.createTable());

广告会让浏览体验不好,可这是网站的唯一收入,请点击下面的百度广告,支持老高的开源行动吧!