Extjs grid工具栏中搜索的实现
1.单选框+文本框:
{ id:"byXmmc", xtype:"radio", boxLabel:"按项目名称 ", name:"ftype", //注意两个radio的name是一样的,才是一组的 listeners:{ "check":function(){ Ext.getCmp("paras").setValue("");//文本框置空 } } },{ id:"byQymc", xtype:"radio", boxLabel:"按企业名称 ", name:"ftype", checked:true //默认选中 },{ id:"paras", xtype:"textfield", enableKeyEvent:true,//开启文本框按键监听 listeners:{ "specialKey":function(f,e){ //注意这里是2个参数! if(e.getKey() == e.ENTER){ //或:e.getKey()==Ext.EventObject.ENTER var field = "qymc"; if(Ext.getCmp("byXmmc").checked){ field = "xmmc"; } var paras = Ext.getCmp("paras").getValue(); var status = Ext.getCmp("status").getValue(); epStore.baseParams.pField = field; epStore.baseParams.pParas = paras; epStore.baseParams.pStatus = status; epStore.load({params:{start:0,limit:pageSize}}); } } } }
2.Combox下拉选框:
{ xtype:"label", text:"状态:" },{ id:"status", xtype:"combo", value:'', width:90, mode : 'local', triggerAction :'all', forceSelection:true, //强制选择 store : new Ext.data.SimpleStore({ fields : ["id", "name"], data : [ ['', '全部'], ['0', '等待审核'], ['1', '审核成功'] ] }), valueField : "id", displayField : "name", readOnly: true //不可输入 }
3.搜索按钮:
{ text: '搜索', iconCls: 'filter', listeners:{ "click":function(){ var field = "qymc"; if(Ext.getCmp("byXmmc").checked){ field = "xmmc"; } var paras = Ext.getCmp("paras").getValue(); var status = Ext.getCmp("status").getValue(); epStore.baseParams.pField = field; epStore.baseParams.pParas = paras; epStore.baseParams.pStatus = status; epStore.load({params:{start:0,limit:pageSize}}); } } }
综合示例:
1.Extjs:
/*-----1.创建数据源-----*/ var epStore = new Ext.data.JsonStore({ autoLoad: true, url:"getEProject.eva?doType=getAuditProject", root:"data", fields: ["id","xmid","project","company","etype","emode","eagency","status","advice","audit_date","other"] }); /*-----2.创建视图渲染颜色-----*/ var epView = new Ext.grid.GridView({ getRowClass : function(record, rowIndex){ if(record.get('status') == 1){ return "readOnly"; } } }); /*-----3.创建ColumnModel-----*/ var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel({ columns:[ sm, { header:"编号", dataIndex:"id", hidden:true },{ header:"项目名称", dataIndex:"project", width:150, sortable:true }, ...... ... ... ] }); /*-----4.创建表格面板-----*/ var grid = new Ext.grid.GridPanel({ store:epStore, cm:cm, sm:sm, view: epView, loadMask:{msg:'正在加载数据,请稍侯……'}, height:80, tbar:[ { id:"byXmmc", xtype:"radio", boxLabel:"按项目名称 ", name:"ftype", listeners:{ "check":function(){ Ext.getCmp("paras").setValue(""); } } },{ id:"byQymc", xtype:"radio", boxLabel:"按企业名称 ", name:"ftype", checked:true },{ id:"paras", xtype:"textfield", enableKeyEvent:true, listeners:{ "specialKey":function(f,e){ if(e.getKey() == e.ENTER){ var field = "qymc"; if(Ext.getCmp("byXmmc").checked){ field = "xmmc"; } var paras = Ext.getCmp("paras").getValue(); var status = Ext.getCmp("status").getValue(); epStore.baseParams.pField = field; epStore.baseParams.pParas = paras; epStore.baseParams.pStatus = status; epStore.load({params:{start:0,limit:pageSize}}); } } } },"-",{ xtype:"label", text:"状态:" },{ id:"status", xtype:"combo", value:'', width:90, mode : 'local', triggerAction :'all', forceSelection:true, store : new Ext.data.SimpleStore({ fields : ["id", "name"], data : [ ['', '全部'], ['0', '等待审核'], ['1', '审核成功'] ] }), valueField : "id", displayField : "name", readOnly: true },"-",{ text: '搜索', iconCls: 'filter', listeners:{ "click":function(){ var field = "qymc"; if(Ext.getCmp("byXmmc").checked){ field = "xmmc"; } var paras = Ext.getCmp("paras").getValue(); var status = Ext.getCmp("status").getValue(); epStore.baseParams.pField = field; epStore.baseParams.pParas = paras; epStore.baseParams.pStatus = status; epStore.load({params:{start:0,limit:pageSize}}); } } },{ text:"审核项目", iconCls: 'audit', handler:showAuditWin },{ text:"查看审核详情", iconCls:"apply", icon: '../images/apply.gif', handler:showAuditDetailWin } ], bbar: new Ext.PagingToolbar({ pageSize: pageSize, store: epStore, displayInfo: true, displayMsg: '当前显示 {0} - {1} ,共{2}条记录', emptyMsg: "没有数据", items: ['-'] }) });
2.Servlet:
if ("getAuditProject".equals(action)) { String pField = request.getParameter("pField"); String pParas = request.getParameter("pParas"); String pStatus = request.getParameter("pStatus"); EvaluationDao evaluationDao = new EvaluationDao(); JSONObject jObject = new JSONObject(); jObject.put("data", evaluationDao.getAuditProject(user,pField,pParas,pStatus)); response.setContentType("text/json;charset=UTF-8"); out = response.getWriter(); out.print(jObject); out.close(); return; }
3.Dao:
public JSONArray getAuditProject(User user, String field, String paras, String status) { Session s = null; List list = null; JSONArray jArray = new JSONArray(); long did = Long.valueOf(user.getDepartment().getDid()); try { s = HibernateUtil.getSession(); s.beginTransaction(); StringBuffer sb = new StringBuffer(); if (user.getUserid().equals("admin")) { sb.append("select au.id,p.xmid,p.xmmc," + "e.qymc,ev.etype,ev.emode,ev.eagency,au.status,au.advice,au.audit_date from " + "enterprise e,en_project p,project_evaluate ev," + "project_audit au where e.swdjzh = p.swdjzh and " + "p.xmid in ev.xmid and au.jid = ev.id"); } else { sb.append("select au.id,p.xmid,p.xmmc," + "e.qymc,ev.etype,ev.emode,ev.eagency,au.status,au.advice,au.audit_date from " + "enterprise e,en_project p,project_evaluate ev," + "project_audit au where e.swdjzh = p.swdjzh and " + "p.xmid in ev.xmid and au.jid = ev.id and au.did =" + did); } if (paras != null && !"".equals(paras)) { if ("xmmc".equals(field)) { sb.append(" and p.xmmc like '%"+paras+"%' "); }else if ("qymc".equals(field)) { sb.append(" and e.qymc like '%"+paras+"%' "); } } if(status != null && !"".equals(status)){ sb.append(" and au.status = " + status); } Query query = s.createSQLQuery(sb.toString()); list = query.list(); if (list != null && list.size() > 0) { for (int i = 0; i < list.size(); i++) { Object[] obj = (Object[]) list.get(i); JSONObject jObject = new JSONObject(); jObject.put("id", obj[0]); jObject.put("xmid", obj[1]); jObject.put("project", obj[2]); jObject.put("company", obj[3]); jObject.put("etype", obj[4]); jObject.put("emode", obj[5]); jObject.put("eagency", obj[6]); jObject.put("status", obj[7]); jObject.put("advice", obj[8]); jObject.put("audit_date", obj[9]); jArray.put(jObject); } } } catch (Throwable e) { logger.error(e); HibernateUtil.endSession(s); } finally { HibernateUtil.endSession(s); } return jArray; }