写此组件是看了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> ' } } 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> ' } 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 }] })
到此一个完整的表格列组件开发完成。
相关推荐
在ExtJS中,"按钮列"(Button Column)是一种特殊的列类型,常用于表格面板,允许用户在每一行数据的特定列上执行操作。 标题提到的"ExtJS文字按钮列"是指在ExtJS表格中添加一列,该列包含的是文字按钮而非图片按钮...
它提供了丰富的组件库,包括表格、表单、树形视图、图表等,以及一套完整的主题和图标集。"extjs bug 图标大全" 指的是在ExtJS框架中与错误或问题相关的图标集合。这些图标通常用于表示程序中的错误状态、警告信息...
- **表格(Grid)**:在表格列头中,图标可用于表示排序、过滤等操作。 - **窗体(Form)**:在表单组件中,图标常用于指示输入状态或操作按钮。 6. **性能优化** - **雪碧图(Sprite Image)**:为了减少HTTP...
在ExtJs中,图标是提升用户界面美观度和交互性的重要元素,尤其对于按钮、菜单项、工具栏等组件,图标能够直观地表示功能,增强用户的认知。 "ExtJs实用图标大全"包含了近千个专为ExtJs设计的小图标,尺寸为16x16...
或者在`Ext.grid.column.Column`中使用图标作为列头图标,使得表格更具视觉吸引力。通过灵活运用这些图标,开发者可以创建出更加直观、易用的用户界面。 总的来说,"5000个ExtJS小图标"是一个宝贵的资源库,为ExtJS...
CSS类通常用于内置的EXTJS图标,通过设置组件的`iconCls`属性来引用,例如`' Ext-icon-calendar'`。这些预定义的CSS类在EXTJS框架内部定义,开发者可以直接使用,无需额外引入资源。而图片URL则需要开发者自行提供,...
ExtJS图标系统允许开发者为按钮、菜单项和其他UI元素添加视觉效果,增强其可识别性和美观性。这些图标通常通过CSS类名引用,可以是矢量图形,以确保在不同分辨率下都能清晰显示。 EasyUI则是一个基于jQuery的轻量级...
在EXTJS中,按钮组件可以配置图标,这些图标可以表示操作的类型,如保存、取消、关闭等。通过这个压缩包,开发者可以轻松获取到适用于EXTJS按钮的各种图标,快速美化或标识其应用中的功能按钮。 至于"ExtIcon"这个...
jQuery EasyUI是基于jQuery的轻量级UI框架,它提供了一系列预先定义好的CSS和JavaScript组件,如对话框、表格、菜单、按钮等,极大地简化了网页界面的构建过程。与ExtJS一样,这些小图标可以为EasyUI的组件增添视觉...
动态添加按钮在很多情况下非常有用,比如在表格数据加载后根据特定条件显示或隐藏操作按钮,或者根据用户权限控制按钮的显示。在ExtJS中,我们可以利用`grid`的`column`配置和`actionColumn`来实现这一功能。 首先...
ExtJS图标库是一个集合了ExtJS框架中常用的各种图标资源,这些图标在开发基于ExtJS的应用程序时常常被用于按钮、菜单、工具栏等界面元素,以提供视觉上的指示和操作提示。ExtJS是一个功能丰富的JavaScript UI框架,...
在ExtJS中,小图标(icons)是用户界面不可或缺的一部分,它们可以为按钮、菜单项、工具栏等元素添加视觉标识,提高用户体验。 "5000个ExtJS小图标"的资源集合是一个庞大的图标库,涵盖了各种各样的图标设计,适用...
通过使用这个图标大全,ExtJS开发者可以在不牺牲性能的前提下,为应用程序增添更多视觉层次和互动性。 图标大全包含了2000个图标,这意味着它涵盖了各种类型和风格的图标,例如通用的文件操作图标、导航图标、社交...
这些图片通常用于按钮、图标、状态指示器等,通过与CSS结合使用,可以实现丰富的视觉效果。在调整布局或者改变主题时,这些图片可能会被替换或修改。 `js`目录是核心部分,存放了ExtJS 3.1的JavaScript库和相关的...
1. **ExtJS框架与图标**:ExtJS框架提供了丰富的组件和工具,如表格、表单、树形视图等,而这些组件的美化往往离不开图标的支持。这些16 * 16的小图标可以被用作按钮、工具栏、菜单和对话框中的图形元素,以增强UI的...
这些图标可以是菜单、按钮、工具栏、表格列头等组件的一部分,使得应用程序更加直观易用。在本篇文章中,我们将深入探讨ExtJS中的小图标及其使用方法。 首先,了解图标的基本概念。在Web开发中,图标通常分为两种...
其次,"表格操作图标"涉及到的数据处理领域。在电子表格或数据库应用中,用户可能需要排序、过滤、计算、插入或删除行或列。这些操作对应的图标如"升序"、"降序"、"加减行"等,有助于提升用户在数据处理时的效率。在...
总的来说,这个包含1700多个PNG格式的ExtJS图标集合为开发者提供了一个丰富的资源库,帮助他们快速创建专业且美观的后台管理系统。无论是在设计阶段还是开发过程中,都能大大提高效率,提升最终产品的质量。通过合理...
- **控件(widgets)**:EXTJS提供了大量的可视化组件,如面板、表格、树、窗口等,它们都基于底层API构建。 - **实用工具(Utils)**:EXTJS提供了各种实用工具,如数据处理、JSON操作、Ajax请求、日期和数组管理...