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 ...
随机推荐
- Java面试常见知识点总结(三)
21.volatile关键字: 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: (1) 保证了不同线程对这个变量进行操作时的可见性,即一个线程 ...
- Delphi的分配及释放---New/Dispose, GetMem/FreeMem及其它函数的区别与相同
转载自:http://www.cnblogs.com/qiusl/p/4028437.html?utm_source=tuicool 我估摸着内存分配+释放是个基础的函数,有些人可能没注意此类函数或细 ...
- POJ 1979 Red and Black【DFS】
标准DFS,统计遍历过程中遇到的黑点个数 #include<cstdio> #include<vector> #include<queue> #include< ...
- curl使用简单介绍
http://www.linuxidc.com/Linux/2008-01/10891.htm Curl是Linux下一个很强大的http命令行工具,其功能十分强大. 二话不说,先从这里开始吧! $ ...
- windows下node环境配置
1.在node官网上下载合适版本的node安装包,官网地址:http://nodejs.org/#download:我下载的6.5最新版本: 2.安装node,都是系统默认的,一直安装下去: 3.在c ...
- POI的入门
POI快速入门 POI开发需要的七个步骤: 1.创建工作薄WorkBook对象 Workbook wb = new HSSFWorkbook(); //它是操作excel 2003版本 2.创建一个工 ...
- 关于利用bat文件调用exe批量处理文件下的文件的问题
for %%i in (E:\radar_20120721\sjz_sa\*.bin) do start/wait radas.exe -i=%%i -o=E:\longjiang\out 找到 文件 ...
- vs2013中一: 无法查找或打开 PDB 文件解决办法 二:解决This function or variable may be unsafe
一 链接地址: https://www.baidu.com/s?wd=%E6%97%A0%E6%B3%95%E6%9F%A5%E6%89%BE%E6%88%96%E6%89%93%E5%BC%80 ...
- selenium获取Cookie操作
直接贴代码: Set cookies = dr.manage().getCookies(); for (Cookie cookie : cookies) { System.out.println(&q ...
- ASP.NET MVC3中Controller与View之间的数据传递总结
一. Controller向View传递数据 1. 使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...