`

Extjs多图标表格操作按钮列组件实现

阅读更多

写此组件是看了joffice中的表格列中将操作用图标在一个列中实现,但看了源码他们采用的是在renderer中用拼接html标签实现,这样就难维护,不好使用,而且点击图片执行操作的时候作用域是指向整个window,并不能或用很不好的方式去获取表格本身这个对象,于是自己写了个,呈现的效果是一样,但使用更方便,作用域好控制,先晒一张效果图,在此展示下效果:

 

实现代码:

/**
 * 按钮列按钮表格控件
 * @class Ext.ux.grid.MultiImageBtnColumn
 * @extends Ext.util.Observable
 * @author hanfei
 * @cfg buttons @type array or Object  
 * @example :
 * buttons :[{text : '查看',
			cls : "btn-task",
			scope : this,
			handler : function(v,m,r){alert(r.get("key")+this.getTitle())}
		}]
需加入css样式		
div button {
	border: none;
	cursor: pointer;
	width: 16px;
	height: 16px;
}

.btn-task {
	background: url(task.gif) no-repeat !important;
}
 */
Ext.ux.grid.MultiImageBtnColumn = Ext.extend(Ext.util.Observable,{
			constructor : function(config){
			Ext.apply(this, config);
			Ext.ux.grid.MultiImageBtnColumn.superclass.constructor.call(this, config);
		},
		renderer : function(v){
			var str= "" ;
			if(!this.buttons){
				return "no buttons";
			}
			if(Ext.isArray(this.buttons)){//如果是数组
				for(var i= 0;i<this.buttons.length;i++){
					var id = Ext.id();//button id
					var item = this.buttons[i];
					Ext.ux.grid.ColumnHandlers.add({
						id: id,
						fn: item.handler,
						scope: item.scope || this,//设置作用域
						params: Array.prototype.slice.call(arguments,0)
					});
					if(!item.hiddenFn  || item.hiddenFn.apply((item.scope || this),Array.prototype.slice.call(arguments,0))){
						str+='<button id="' + id + '" title="'+item.text+' " value=" " style="border: none;cursor: pointer;width: 16px;height: 16px;" class="'+item.cls+'" onclick="(' + this.clickDelegate + ').call(this, event)"></button>&nbsp;'
					}
				}
				return str ;
			}else if(Ext.isObject(this.buttons)) {//
					var id = Ext.id();//button id
					var item = this.buttons;
					Ext.ux.grid.ColumnHandlers.add({
						id: id,
						fn: item.handler,
						scope: item.scope || this,//设置作用域
						params: Array.prototype.slice.call(arguments,0)
					});
					if(!item.hiddenFn  || item.hiddenFn.apply((item.scope || this),Array.prototype.slice.call(arguments,0))){
						str= '<button id="' + id + '" title="'+item.text+' " value=" " style="border: none;cursor: pointer;width: 16px;height: 16px;"  class="'+item.cls+'" onclick="(' + this.clickDelegate + ').call(this, event)"></button>&nbsp;'
					}
					return str;
			}
		},
		clickDelegate : function(e){
			var handler = Ext.ux.grid.ColumnHandlers.get(this.id);
			e = Ext.EventObject.setEvent(e);
			if(handler){
				handler.fn.apply(handler.scope, handler.params.concat(e));
			}
		}
	});

 调用方式只需在定义表格列的时候像如下方式调用即可:

[new Ext.ux.grid.MultiImageBtnColumn({
						header : '操作项',
						dataIndex : 'userId',
						width : 80,
						buttons : [{text : '编辑',
								cls : "btn-writeFlow",
								scope : this,
								handler : this.editUser
							},{
								text :"删除",
								cls : "btn-viewFlow",
								scope : this,
								handler : this.delUser
							},{
								text :"接收任务",
								cls : "btn-endFlow",
								scope : this,
								hiddenFn :function(v,m,r){//此方法用于是否显示该图标按钮
									return Ext.isEmpty(r.get("assignee"));
								},
								handler : this.reciveTask
							}]
		
		})

 到此一个完整的表格列组件开发完成。

  • 大小: 32.6 KB
0
0
分享到:
评论

相关推荐

    ExtJS文字按钮列

    在ExtJS中,"按钮列"(Button Column)是一种特殊的列类型,常用于表格面板,允许用户在每一行数据的特定列上执行操作。 标题提到的"ExtJS文字按钮列"是指在ExtJS表格中添加一列,该列包含的是文字按钮而非图片按钮...

    extjs bug 图标大全

    它提供了丰富的组件库,包括表格、表单、树形视图、图表等,以及一套完整的主题和图标集。"extjs bug 图标大全" 指的是在ExtJS框架中与错误或问题相关的图标集合。这些图标通常用于表示程序中的错误状态、警告信息...

    Extjs小图标

    - **表格(Grid)**:在表格列头中,图标可用于表示排序、过滤等操作。 - **窗体(Form)**:在表单组件中,图标常用于指示输入状态或操作按钮。 6. **性能优化** - **雪碧图(Sprite Image)**:为了减少HTTP...

    ExtJs实用图标大全

    在ExtJs中,图标是提升用户界面美观度和交互性的重要元素,尤其对于按钮、菜单项、工具栏等组件,图标能够直观地表示功能,增强用户的认知。 "ExtJs实用图标大全"包含了近千个专为ExtJs设计的小图标,尺寸为16x16...

    5000个extjs小图标,真的非常的全面

    或者在`Ext.grid.column.Column`中使用图标作为列头图标,使得表格更具视觉吸引力。通过灵活运用这些图标,开发者可以创建出更加直观、易用的用户界面。 总的来说,"5000个ExtJS小图标"是一个宝贵的资源库,为ExtJS...

    5000个常用到extjs小图标

    CSS类通常用于内置的EXTJS图标,通过设置组件的`iconCls`属性来引用,例如`' Ext-icon-calendar'`。这些预定义的CSS类在EXTJS框架内部定义,开发者可以直接使用,无需额外引入资源。而图片URL则需要开发者自行提供,...

    extjs easyui小图标

    ExtJS图标系统允许开发者为按钮、菜单项和其他UI元素添加视觉效果,增强其可识别性和美观性。这些图标通常通过CSS类名引用,可以是矢量图形,以确保在不同分辨率下都能清晰显示。 EasyUI则是一个基于jQuery的轻量级...

    这里是我整合的所有EXTJS的图标

    在EXTJS中,按钮组件可以配置图标,这些图标可以表示操作的类型,如保存、取消、关闭等。通过这个压缩包,开发者可以轻松获取到适用于EXTJS按钮的各种图标,快速美化或标识其应用中的功能按钮。 至于"ExtIcon"这个...

    extjs小图标.rar

    jQuery EasyUI是基于jQuery的轻量级UI框架,它提供了一系列预先定义好的CSS和JavaScript组件,如对话框、表格、菜单、按钮等,极大地简化了网页界面的构建过程。与ExtJS一样,这些小图标可以为EasyUI的组件增添视觉...

    ExtJs的resultGrids中动态添加按钮

    动态添加按钮在很多情况下非常有用,比如在表格数据加载后根据特定条件显示或隐藏操作按钮,或者根据用户权限控制按钮的显示。在ExtJS中,我们可以利用`grid`的`column`配置和`actionColumn`来实现这一功能。 首先...

    extjs图标,包含extjs里面的所有基本用过的图标,当做学习之用

    ExtJS图标库是一个集合了ExtJS框架中常用的各种图标资源,这些图标在开发基于ExtJS的应用程序时常常被用于按钮、菜单、工具栏等界面元素,以提供视觉上的指示和操作提示。ExtJS是一个功能丰富的JavaScript UI框架,...

    5000个ExtJS小图标

    在ExtJS中,小图标(icons)是用户界面不可或缺的一部分,它们可以为按钮、菜单项、工具栏等元素添加视觉标识,提高用户体验。 "5000个ExtJS小图标"的资源集合是一个庞大的图标库,涵盖了各种各样的图标设计,适用...

    icon图标大全(2000个icon),适用于easyui,extjs等

    通过使用这个图标大全,ExtJS开发者可以在不牺牲性能的前提下,为应用程序增添更多视觉层次和互动性。 图标大全包含了2000个图标,这意味着它涵盖了各种类型和风格的图标,例如通用的文件操作图标、导航图标、社交...

    extjs 3.1 组件 使用

    这些图片通常用于按钮、图标、状态指示器等,通过与CSS结合使用,可以实现丰富的视觉效果。在调整布局或者改变主题时,这些图片可能会被替换或修改。 `js`目录是核心部分,存放了ExtJS 3.1的JavaScript库和相关的...

    1000个ExtJS小图标[16 * 16]

    1. **ExtJS框架与图标**:ExtJS框架提供了丰富的组件和工具,如表格、表单、树形视图等,而这些组件的美化往往离不开图标的支持。这些16 * 16的小图标可以被用作按钮、工具栏、菜单和对话框中的图形元素,以增强UI的...

    extjs小图标

    这些图标可以是菜单、按钮、工具栏、表格列头等组件的一部分,使得应用程序更加直观易用。在本篇文章中,我们将深入探讨ExtJS中的小图标及其使用方法。 首先,了解图标的基本概念。在Web开发中,图标通常分为两种...

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

    其次,"表格操作图标"涉及到的数据处理领域。在电子表格或数据库应用中,用户可能需要排序、过滤、计算、插入或删除行或列。这些操作对应的图标如"升序"、"降序"、"加减行"等,有助于提升用户在数据处理时的效率。在...

    适合后台管理的1700多个png格式的extjs图标

    总的来说,这个包含1700多个PNG格式的ExtJS图标集合为开发者提供了一个丰富的资源库,帮助他们快速创建专业且美观的后台管理系统。无论是在设计阶段还是开发过程中,都能大大提高效率,提升最终产品的质量。通过合理...

    EXTJS讲解个人项目经历

    - **控件(widgets)**:EXTJS提供了大量的可视化组件,如面板、表格、树、窗口等,它们都基于底层API构建。 - **实用工具(Utils)**:EXTJS提供了各种实用工具,如数据处理、JSON操作、Ajax请求、日期和数组管理...

Global site tag (gtag.js) - Google Analytics