在Web项目开发过程中,经常会碰到处理表格的维护操作(增加,删除,修改,显示),那么如何来做到通用操作呢?这里提供完整的实现代码,供网友们设计时参考:
列表显示代码:
String tabstyle=StrCharUtil.formatNullStr(request.getParameter("tabstyle")); if(tabstyle.equals(""))tabstyle="0"; String sql=DBGRIDDESC.SQL_SIMPLEST; //以下用DBGRID来显示表格 Query q=new Query(sql); //以下定义DBGRID各个属性字段 //隐藏字段定义 Field hf1=new Field("id1","id1","序号1",true,true,false,0,Field.TYPE_STRING); Field hf2=new Field("id2","id2","序号2",true,true,false,0,Field.TYPE_STRING); //显示字段定义 Field vf1=new Field("catename","catename","类别名称",false,true,true,10,Field.TYPE_STRING); Field vf2=new Field("dt","dt","日期",false,true,true,10,Field.TYPE_DATE); Field vf3=new Field("num","num","数字",false,true,true,10,Field.TYPE_LONG); Field vf31=new Field("num1","num1","数字1",false,true,true,10,Field.TYPE_LONG); Field vf4=new Field("desc1","desc1","描述信息",false,true,true,30,Field.TYPE_STRING); Field vf5=new Field("color","color","颜色",false,true,true,10,Field.TYPE_COLOR); //表达式定义 Field ef1=new Field("1+1*2","exp1","表达式1",false,true,true,10,Field.TYPE_LONG); Field ef2=new Field("3+2","exp2","表达式2",false,true,true,10,Field.TYPE_DATE); //数据集中加入属性定义 q.addField(new Field[]{hf1,hf2,vf1,vf2,vf3,vf31,vf4,vf5,ef1,ef2}); Dbgrid dg=new Dbgrid(100,"#bdcff7","#d1ddf9","#FFFFFF",false,false,"",q); if(tabstyle.equals("1")) dg.setTabStyle(Dbgrid.TABLE_CHECKBOX,new int[]{0},0); if(tabstyle.equals("2")) dg.setTabStyle(Dbgrid.TABLE_RADIO,new int[]{0},0); if(tabstyle.equals("3")) dg.setTabStyle(Dbgrid.TABLE_LINENUM,new int[]{1},0); dg.addDefaultColumns(); String res=dg.createGrid(); out.println(res);
如下图所示:
多行在线编辑代码:
String act=StrCharUtil.formatNullStr(request.getParameter("act")); if(act.equals("")) act="qry"; if(act.equals("save")) { Dbgrid mydg=(Dbgrid)request.getSession().getAttribute("loadgrid"); mydg.processSave(request); response.sendRedirect("lookupEdit.jsp"); }else { String sql=DBGRIDDESC.SQL_SIMPLEST; String lsql=DBGRIDDESC.SQL_LOOKUP; Query q=new Query(sql); Query lq=new Query(lsql); Field ff1=new Field("cate"); Field ff2=new Field("catename"); lq.addField(ff1);lq.addField(ff2); lq.setName("lq"); LookupField lf1=new LookupField("cate","所在分类","lq","cate","catename"); lf1.setLookupDataSet(lq); Field hf1=new Field("id1","id1","序号1",true,true,false,0,Field.TYPE_STRING); Field hf2=new Field("id2","id2","序号2",true,true,false,0,Field.TYPE_STRING); Field vf1=new Field("num","num","数字",false,false,true,20,Field.TYPE_LONG); Field vf3=new Field("desc1","desc1","描述",false,false,true,50,Field.TYPE_STRING); CheckField cf1=new CheckField("bln","bln","布尔值",false,false,true,10,Field.TYPE_BOOLEAN,"1","0"); q.addField(new Field[]{hf1,hf2,cf1,lf1,vf1,vf3}); String usql="update DBGRID_ZB set bln=:bln,cate=:cate,num=:num,desc1=:desc1 where id1=:id1 and id2=:id2"; UpdateSQL us=new UpdateSQL(usql); q.setUpdateObj(us); Dbgrid dg=new Dbgrid(100,DBGRIDDESC.HEADCOLOR,DBGRIDDESC.GRIDLINECOLOR,DBGRIDDESC.GRIDCOLOR,q); dg.addDefaultColumns(); String res=dg.createGrid(); request.getSession().setAttribute("loadgrid",dg); out.println(res);
效果图:
附件中有可运行的完整代码,附上MYSQL的示例脚本(见附件)