`

Extjs grid工具栏中搜索的实现

阅读更多

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;
}

 

图示:

 

 

 

 

 

  • 大小: 3.2 KB
  • 大小: 2.4 KB
  • 大小: 8.8 KB
  • 大小: 9.5 KB
  • 大小: 23.8 KB
分享到:
评论

相关推荐

    extjs grid数据导出excel文件

    具体实现时,开发者可能会在EXTJS的事件处理器中添加导出功能,例如在Grid的工具栏上添加一个“导出”按钮,当点击该按钮时触发数据导出的函数。这个函数会按照上述步骤操作,最终生成一个可供下载的Excel文件。 在...

    extjs grid示例代码

    - **工具栏**:可以添加自定义工具栏来增加功能,如搜索框、按钮等。 4. **示例代码详解** 在压缩包的“示例代码”中,可能包含了以上提到的各种Grid特性。代码可能分为几个部分,如`store.js`、`columns.js`和`...

    Extjs grid分页1

    在本文中,我们将深入探讨ExtJS Grid的分页功能及其实现方式。 首先,ExtJS Grid是一种强大的JavaScript组件,用于在Web应用中创建数据网格。它支持各种特性,如排序、过滤、分组、分页等。分页功能特别适用于处理...

    Extjs Grid 扩展实例

    3. **分页**:使用`Ext.toolbar.Paging`工具栏,我们可以轻松地实现数据的分页展示。配置`store`的`paging`属性,以及`grid`的`dockedItems`来添加分页栏,这样用户就能在大量数据中快速导航。 4. **过滤**:通过`...

    ExtJs动态grid的生成

    - Grid的顶部通常包含一个工具栏,可以动态添加按钮或其他UI元素,提供搜索、排序或过滤等功能。这些功能可以通过`dockedItems`配置项实现。 6. **Autogrid.js可能的用途** - 文件名"Autogrid.js"暗示可能是一个...

    extjs-grid-searching:ExtJS网格工具栏扩展添加了搜索功能

    在实际应用中,我们经常需要在网格中实现搜索功能,以便用户能够快速找到所需的信息。标题"extjs-grid-searching:ExtJS网格工具栏扩展添加了搜索功能"所指的就是一个特定的扩展,它为ExtJS网格添加了搜索工具栏,...

    ExtJS 实现动态处理加载 grid 实现了CRUD还有分页功能

    总结起来,使用ExtJS实现动态加载Grid并集成CRUD和分页功能,需要熟练掌握Store、Grid、Proxy和分页工具栏的配置,以及后台接口的设计。通过这种方式,可以构建出高效、灵活且用户友好的数据管理界面。

    extjs grid.panel 项目 源码

    8. **自定义行为**:在源码中,可能会发现一些自定义的行为,比如自定义的工具栏按钮,或者扩展了Grid Panel的行为。这些自定义代码可以帮助我们理解如何扩展和定制ExtJS组件。 9. **布局与样式**:Grid Panel通常...

    ExtJS 使用grid显示数据

    4. **Grid Panel**:实际的组件,`Ext.grid.Panel`,通过配置store和columnModel来创建Grid,还可以添加工具栏、分页条等附加功能。 5. **渲染器(Renderer)**:自定义单元格内容的显示方式,通过配置column的...

    extjs表格Grid比较全面的功能

    行级功能包括行悬停效果、行级工具栏、行内图标等,增强了用户体验。例如,行级菜单可以为每行数据提供定制操作。 9. **锁定列(Locked Columns)** 锁定列功能允许将关键列固定在左侧,即使在滚动时也始终保持...

    extjs4.2 动态生成toolbar

    在 ExtJS 4.2 中实现动态生成 Toolbar,以满足 gridPanel 中动态生成带按钮及查询条件的工具栏的需求。本文将详细介绍如何实现动态生成 Toolbar,包括视图层、 Toolbar.js 和后台调用创建工具栏的方法。 视图层 在...

    使用extjs4+servlet对extjs中grid数据进行填并实现增删改查等功能!

    在实现增删改查功能时,我们通常会在Grid上添加工具栏或行级别的操作按钮。例如,添加一个“添加”按钮,可以通过以下代码实现: ```javascript var tb = Ext.create('Ext.toolbar.Toolbar', { dock: 'top', ...

    ExtJS之Grid

    其中,`Ext.grid.Panel`是ExtJS中的核心组件之一,用于展示表格数据,并支持排序、分组以及编辑等功能。 #### 二、基本GridPanel 在创建一个简单的`Ext.grid.Panel`时,我们需要关注以下几个关键点: 1. **定义...

    给Extjs的GridPanel增加“合计”行

    在EXTJS中,GridPanel是一种常用的组件,用于展示表格数据。在实际应用中,我们经常需要在GridPanel底部显示一行“合计”行,以便对某一列或多列的数据进行求和或其他统计操作。这篇博文“给Extjs的GridPanel增加...

    extjs3.3 中文文档

    7. **工具栏和菜单**:EXTJS提供创建工具栏和下拉菜单的功能,这些元素常用于提供用户交互。 8. **拖放功能**:EXTJS 3.3支持拖放操作,允许用户将组件拖动到不同的位置,或者在组件之间拖放数据。 9. **国际化和...

    ASP.NET结合ExtJs+WCF+LINQ实现的分页Grid列表

    3. 创建ASP.NET页面:在客户端,使用ExtJs创建Grid组件,并配置分页工具栏。设置数据源为WCF服务的URL,并监听分页事件,调用服务获取新的数据。 4. 构建AJAX请求:在分页事件触发时,利用ExtJs的Ajax请求机制,向...

    Extjs4 Grid分页与自动刷新

    下面详细介绍如何在Extjs4中实现Grid的分页功能。 **1.1 创建数据存储(Store)** 首先需要创建一个`Ext.data.Store`实例,这是Extjs中用于存储和管理数据的核心对象。在创建Store时,需要设置分页参数`pageSize`...

    extjs实现增删查改

    它提供了丰富的组件库,包括表格、表单、菜单、工具栏等,使得开发者能够轻松创建功能强大的用户界面。在“extjs实现增删查改”这个主题中,我们将探讨如何使用ExtJS来实现基本的数据操作功能。 首先,增删查改...

    Ext 文件,表格,工具栏,邮件,RSS,小图标素材

    这些图标在Ext框架中可能用于创建自定义工具栏或菜单,帮助用户更直观地进行文件管理。 其次,"表格操作图标"涉及到的数据处理领域。在电子表格或数据库应用中,用户可能需要排序、过滤、计算、插入或删除行或列。...

    Extjs 增删改查

    - 当用户选中某条记录时,可以通过工具栏中的编辑按钮或双击记录来启动编辑模式。 - 显示表单供用户修改数据,完成后调用`editUrl`进行更新。 4. **查询记录** - 初始化Grid时,通过`storeUrl`获取数据列表并...

Global site tag (gtag.js) - Google Analytics