ExtJS扩展:扩展grid之toolbar button禁用表达式
在前一篇文章我们扩展了grid通过选中记录数来禁用toolbar上的按钮,有时候我们需要通过记录中的数据来决定是否禁用按钮,今天我们就来扩展它。
照例,最新的代码和例子都在github上:ExtJsExtend
先看看使用代码(这里只有部分代码,可以结合前一篇文章来阅读或者直接通过github获取最新代码):
.ln { color: rgb(0,0,0); font-weight: normal; font-style: normal; }
.s0 { color: rgb(169,183,198); }
.s1 { color: rgb(106,135,89); }
.s2 { color: rgb(204,120,50); }
.s3 { color: rgb(204,120,50); font-weight: bold; }
.s4 { color: rgb(104,151,187); }
.s5 { color: rgb(232,191,106); }
buttonDisable: {
noSelection: ['Edit', 'Delete', 'Print'],
moreSelections: ['Edit'],
expressions: {
Edit: '$phone == "555-222-1254"'
}
},
(这里重构了前一篇文章中的用法
,将noSelectionDisable、oneSelectionDisable、moreSelectionsDisable整合进buttonDisable中了)。
expressions就是表达式,用item的name或itemId作为Key,表达式就是javascript的表达式,需要注意的是要在field的名称前加$(因为最终要替换$,通过eval来运行表达式)。来看看效果:

嗯,这条记录是可以编辑的。

这条记录不能编辑,因为phone== “555-222-1254”。
看看这部分扩展的代码:
if (me.buttonDisable.expressions) {
var exps = me.buttonDisable.expressions;
for (var btn in exps) {
var exp = exps[btn];
for(var i = 0, il = records.length;i<il;i++) {
var data = records[i].data;
exp = exp.replace(/\$/g, 'data.');
var disabled = eval(exp);
if (disabled === true) {
disables[btn] = true;
break;
}
}
}
}
代码也比较简单,就是遍历选中记录,然后在数据上执行表达式,如果为true就禁用,只要有一条记录的数据满足,那么这个按钮就将会被禁用。
还需注意,表达式禁用比选中记录数禁用的优先级高。
ExtJS扩展:扩展grid之toolbar button禁用表达式的更多相关文章
- ExtJS 4.2 Grid组件的单元格合并
ExtJS 4.2 Grid组件本身并没有提供单元格合并功能,需要自己实现这个功能. 目录 1. 原理 2. 多列合并 3. 代码与在线演示 1. 原理 1.1 HTML代码分析 首先创建一个Grid ...
- 无废话ExtJs 入门教程六[按钮:Button]
无废话ExtJs 入门教程六[按钮:Button] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个两个按钮“提交”与重置.如下所示代码区的第68行位置, butt ...
- Visual Studio扩展与更新中插件被禁用,安装后无法使用
在Visual Studio中的扩展与更新中安装插件后,显示[禁用],重新安装后仍然不能使用,但是VS默认安装的扩展却可以正常使用. 这里需要注意下方显示“当前不允许加载每用户扩展”,点击“启用每用户 ...
- ExtJS组件扩展
1.extends 2.initComponent 3.constracot: 4.onRender:重新写这个方法 ========================================= ...
- Extjs 4.2 Grid增删改及后台交互(Java)
上次发了Easyui Datagrid的增删改查的使用学习记录后一直想整理下基于Extjs4.2的Grid学习使用记录.苦于抽不出时间,一直拖到现在.不得不说,Extjs确实很强大,新版的Neptun ...
- ExtJs中的Grid具体操作(笔记及心得)
一.基本操作步骤 var cm=new Ext.grid.ColumnModel([ //对列的定义,cm是它的简写,作为真个表格的列模式,需要首先创建的{header:'编号',dataIndex: ...
- [Extjs] Ext4 Ext.grid.Panel 分页实现(mybatis 分页插件-PageHelper 使用)
先看图: 页面js代码: var userStore=Ext.create('Ext.data.Store', { storeId:'userStore', fields:['uname', 'ema ...
- ExtJs的Ext.grid.GridPanel不能选择复制表格中的内容解决方案
今天遇到grid复制的问题,在网上找到了一个解决办法,只需改下CSS和JS,给大家分享一下: 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dy_paradise/a ...
- ExtJs之Ext.grid.GridPanel(部分未完)
今天在家休息,年假不用就作费啊. 看了几部香港老电影,陪爸爸看了勇士占奇才, 然后,测试了一下EXTJS未完的内容, 在京东上订了七本历史普及书,近两百块..:) 搞定. <!DOCTYPE h ...
随机推荐
- JS中,!=, !== 和 !的区别和使用场景
var num = 1; var str = '1'; var test = 1; test == num //true 相同类型 相同值 test === num //true 相同类型 ...
- Win7 U盘安装Ubuntu16.04 双系统详细教程
Win7 U盘安装Ubuntu16.04 双系统详细教程 安装主要分为以下几步: 一. 下载Ubuntu 16.04镜像软件: 二. 制作U盘启动盘使用ultraISO: 三. 安装Ubuntu系统: ...
- V4.0到来了,css雪碧图生成工具4.0更新啦
V3.0介绍 http://www.cnblogs.com/wang4517/p/4476758.html V4.0更新内容 V4.0下载地址:http://download.csdn.net/det ...
- Quart.NET实施参考
参考 1.博客园: http://www.cnblogs.com/lzrabbit/archive/2012/04/13/2447609.html 2.官网:http://www.cnblogs.co ...
- gradle各版本下载地址
gradle各版本下载地址:http://services.gradle.org/distributions 以前都是手动下载gradle的文件,然后修改的,今天想从一些博客网站上下载最新的gradl ...
- jquery插件开发
jQuery是一个封装的很好的类,比如我们用语句$("#btn1") 会生成一个 jQuery类的实例. 一.jQuery插件开发注意要点 1.使用闭包,避免全局依赖,避免第三方破 ...
- mac homebrew的用法
与 MacPorts 类似,OS X 下还有款包管理工具为 Homebrew,安装方法也很简单. ruby -e "$(curl -fsSL https://raw.github.com/H ...
- HDU5838 Mountain(状压DP + 容斥原理)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5838 Description Zhu found a map which is a N∗M ...
- iOS笔记———数据存储
应用沙盒:应用文件系统的根目录,每个应用都有独自的沙盒相互:在xcode中可以用NSHomeDirectory()函数,打印当前应用的沙盒根路径. 应用程序包:包含了所有资源文件和执行文件; * Do ...
- 【原】iOS学习之三种拨打电话方式的比较
拨打电话小编从网上找到三种,在这里做一些总结和比较 1.基本使用 NSString *str = [[NSMutableString alloc] initWithFormat:@"tel: ...