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