`
流浪鱼
  • 浏览: 1692168 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

根据gird中的列信息生成页面数据静态过滤

阅读更多

  在做gridPanel中生成的数据有时需要进行查询,要是对整体数据过滤的话可以进行后台查询,但有些情况是需要根据本页面的数据进行选择,于是本人做了这个小的插件!

这个插件的功能是根据gridpanel中的列模式生成一个列表用于选择根据那个字段过滤数据,然后在文本框中输入需要过滤的数据

界面如图:

下拉列表是根据columnModel动态生成的,默认下拉列表数据中不包含隐藏列,可以自己在初始化插件时进行设置isContainHide 为true,默认从第1列生成下拉列表的数据,可以通过columnStart指定从那一列开始。

具体代码如下:

 

 

Ext.ns('Ext.ux.grid');

Ext.ux.grid.GridDataFilter = Ext.extend(Ext.util.Observable,{
	//当前grid
	grid : null,
	//从那一列开始生成数据,默认从第一列开始
	columnStart : 1 ,
	//生成数据是否包含隐藏列
	isContainHide : false ,
	constructor : function(config){
		Ext.apply(this, config?config:{});
		Ext.ux.grid.GridDataFilter.superclass.constructor.call(this, config);
	},
	init : function(grid){
			this.grid = grid ;
			if(!grid.getTopToolbar()){
				//如果gird有tbar
				var tbar = new Ext.Toolbar([
				this.getTbarCombo()
				, {
					xtype : 'textfield' ,
					listeners : {
						scope : this ,
						render : function (f){
							
							f.el.on('keydown' ,this.gridDataFilter , f , {buffer : 350, opGird:this.grid });
						}
					}
				}
				]);
				grid.add(tbar);
			}else{
				//如果gird没有tbar
				grid.on({
					scope : this ,
					render : function(){
						grid.getTopToolbar().add(this.getTbarCombo());
						grid.getTopToolbar().add({
							xtype : 'textfield' ,
							listeners : {
								scope : this ,
								render : function (f){
									f.el.on('keydown' ,this.gridDataFilter , f , {buffer : 350, opGird:this.grid });
								}
							}
						});
					}
				})
			}
	},
	
	//过滤数据的函数
	gridDataFilter : function(e,t,o){
		var text = e.target.value ;
		var varStore = o.opGird.getStore();
		var tempSelValue = Ext.getCmp('tbarComboId').getValue();
		if( tempSelValue != ''){
			varStore.filter(tempSelValue,text,true ,false );
		}else{
			Ext.Msg.alert('提示','请选择需要查询字段');
		} 
	
	} ,
	
	/**
	*根据grid生成列定义数组值
	*@start,从那一列开始生成数据
	*@param isContainHide是否包含隐藏列字段 默认false
	*/
	getGridColumnArrayData : function(){
		var isHide =  this.isContainHide ? this.isContainHide : false ;
		var cm = this.grid.getColumnModel();
		var retArr = new Array();
		for(var i=this.columnStart-1 ; i<cm.getColumnCount() ; i++){
			if(isHide){
				var tempArr = new Array();
				tempArr.push(cm.getDataIndex(i));
				tempArr.push(cm.getColumnHeader(i));
				retArr.push(tempArr);
			}else{
				if(!cm.isHidden(i)){
					var tempArr = new Array();
					tempArr.push(cm.getDataIndex(i));
					tempArr.push(cm.getColumnHeader(i));
					retArr.push(tempArr);
				}
			}
		
		}
		return retArr;
	} ,
	/**
	*生成下拉列表的Store数据源
	*/
	getTbarComboStore : function(){
		 var store = new Ext.data.Store({
			data : this.getGridColumnArrayData(),
			reader : new Ext.data.ArrayReader({},[
				{name : 'value' , mapping : 0 },
				{name : 'name' , mapping : 1 }	
			]) 
		});
		return store ;
	} ,
	
	/**
	*生成下拉列表combo
	*/
	getTbarCombo : function(){
		var combo ={
			xtype : 'combo' ,
			emptyText : '请选择查询字段' ,
			editable : false ,
			fieldLabel : '查询字段',
			id : 'tbarComboId' ,
			editable : false ,
			forceSelection : true ,
			store :  this.getTbarComboStore() ,
			triggerAction : 'all' ,
			mode : 'local' ,
			displayField : 'name' ,
			valueField : 'value' 
		}
		return combo ;
	}
});

 

 

  • 大小: 29.8 KB
分享到:
评论

相关推荐

    gird模板列的创建

    `ImageUrl`属性的值通过`DataBinder.Eval(Container,"DataItem.f_DemoImage")`来动态生成,这意味着每行的图片URL将从当前行的数据项(DataItem)中提取`f_DemoImage`字段的值。 `DataBinder.Eval`是一个数据绑定...

    exejs gird filter java action

    在Grid中,过滤功能允许用户根据特定条件筛选数据显示,提高数据查找和分析的效率。 Java Action是Struts框架中的一个概念,它代表了业务逻辑层的实现。在Web应用中,当用户在前端界面上进行操作(如点击过滤按钮)...

    C#中GridView动态添加列的实现方法

    在某些情况下,我们可能需要根据不同的业务需求,动态地向GridView中添加列。这在处理不确定数量或类型的数据时尤其有用。下面我们将详细介绍如何在C#中实现GridView动态添加列。 首先,我们来看一个简单的例子。在...

    nui或者miniui中gird合并重复行数据,查找某行

    在本篇文章中,我们将深入探讨如何在NUI或MiniUI框架中的Datagrid组件实现合并重复行数据,并且介绍如何在这些合并后的数据中查找特定行的功能。本文将分为几个部分来详细阐述:首先,理解Datagrid的基本概念及其在...

    GT-GIRD,一个很优秀的GIRD前台组件

    2. **丰富的功能**:GT-GIRD提供了多种实用的功能,如排序、过滤、分页、拖放列调整、自定义列宽等,这些功能使得在网页上管理复杂表格变得轻松易行。同时,它还支持数据的编辑,用户可以直接在表格内进行增删改操作...

    Gird.zip mfc 写的GIRD 源码

    在本文中,我们将深入探讨由MFC(Microsoft Foundation Classes)编写的GIRD源码,以及在C++编程环境中如何利用这些源码实现基于对话框和Doc/View结构的应用。MFC是一个C++类库,它提供了对Windows API的封装,使得...

    Extjs2.0动态加载gird的例子

    动态加载Grid意味着数据不是一次性全部加载到页面中,而是根据用户滚动或者设定的分页大小逐步加载。这种方式不仅减少了初始页面加载时间,还降低了服务器端的压力,因为只需要处理当前显示的数据。 首先,我们需要...

    简洁博客静态HTML+CSS代码

    3. **静态网站**:这个博客模板是静态的,意味着所有内容都在HTML和CSS文件中预先编码,没有服务器端动态生成的部分。静态网站加载速度快,安全系数高,易于维护,但不支持用户交互功能,如评论系统、动态数据更新等...

    Echarts参数属性学习Gird演示案例

    在"**Echarts参数属性学习Gird演示案例**"中,我们将重点探讨如何使用ECharts的Gird组件来在同一DOM元素内同时展示多种图表,以实现高效的数据呈现和API接口的优化对接。 **Gird组件**是ECharts中用于定义图表区域...

    C#把GRID中的文字存储到EXCEL支持的CSV文件

    在本场景中,我们关注的是如何将一个`DataGridView`控件中的数据转换并保存为Excel兼容的CSV(逗号分隔值)文件。`DataGridView`是C#中的一个组件,用于展示表格数据,而CSV文件格式则是Excel常用的一种导入导出格式...

    ligerui之gird

    除了以上提到的功能,LigerUI Grid还支持分页、排序、过滤、编辑、拖放列等功能,这些都为开发者提供了强大的数据管理能力。在实际开发中,我们需要结合具体需求,灵活运用LigerUI提供的API和配置选项,以实现更复杂...

    StringGrid部分行按列排序

    根据提供的文件信息,本文将详细解释如何在StringGrid控件中实现部分行按列排序的功能。此功能允许用户通过点击StringGrid的标题列来对指定范围内的行数据进行排序。 ### StringGrid概述 StringGrid是Delphi中的一...

    VC-MS-GIRD.rar_CellDemo _MS GIRD_gird_表格 excel vc_表格 vc

    【标题】"VC-MS-GIRD.rar" 是一个基于Visual C++(简称VC)开发的电子表格应用程序,它模仿了MS OFFICE中的表格处理软件,如Microsoft Excel的风格。这个项目名为"CellDemo _MS GIRD_gird_表格 excel vc_表格 vc",...

    ssh+extjs4.0grid删除数据

    在IT行业中,SSH(Spring、Struts和Hibernate)是一个经典的Java Web开发框架组合,而ExtJS则是一个流行的JavaScript库,用于构建富客户端的Web应用程序,特别是数据网格(Grid)功能。这里我们关注的是如何在SSH...

    OD objdictedit CanOpen对象字典生成工具

    OD(Object Dictionary)是CANopen协议中的核心组成部分,它是一个结构化的数据存储区,包含了CANopen设备的所有配置信息和变量。CanOpen对象字典生成工具主要用于帮助开发者创建和管理CANopen设备的OD,使得主站和...

    PB源码示例,绝对高效,效果相当不错,Grid标题美化demo。

    在PB中,Grid的标题通常是指DataWindow控件的列标题。美化的目的是提升用户界面的视觉吸引力和可用性,这可能包括改变字体样式、颜色、大小,添加背景色,甚至实现动态效果,如鼠标悬停时的变化等。通过自定义绘图或...

    Ext扩展控件-----可以在代码中动态为表格增加一列或者删除一列

    这在需要根据业务需求或者用户交互动态改变列结构的场景下非常有用,例如在数据分析、报表生成或者配置式界面设计中。 要使用这个插件,首先你需要在Grid的配置中引入它。这通常涉及到创建一个Grid实例,并在`...

    ext超酷的grid中放图片(ext3.2.1)

    这里,我们创建了一个名为`imagecolumn`的新列类型,`renderer`函数根据`imageUrl`字段生成`&lt;img&gt;`标签。 5. **优化与注意事项** - 为了提高性能,可以考虑使用延迟加载(lazy rendering)技术,只在单元格可见时...

    Gird网格布局学习笔记分享

    Gird网格布局学习笔记分享

    LigerUI之Grid使用详解(一)——显示数据

    在这个例子中,我们定义了三个列:姓名、年龄和城市,并将预定义的数据数组传递给Grid。`ligerGrid`方法会自动解析数据并填充到表格中。 LigerUI的Grid组件还支持动态加载数据,可以使用Ajax从服务器获取数据。例如...

Global site tag (gtag.js) - Google Analytics