- 浏览: 210758 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zlbdexiaohao:
怎么去掉默认的图标,folderClosedIcon=&quo ...
FLEX 构建完美的带有CheckBox三状态的Tree控件 -
zlbdexiaohao:
看不懂看不懂
FLEX 构建完美的带有CheckBox三状态的Tree控件 -
FYIHDG:
[list][*][list][*][*][list][*][ ...
ImageIO读jpg的时候出现exception:bandOffsets.length is wr -
被剥削的程序员:
你好我在引用你的comboxtree解决问题的时候,发现点击父 ...
ComboBoxTree -
527184687:
[flash=200,200][url][img][list] ...
ext treePanel 更换图标 总结
扩展的功能有:
1. 搜索过滤树节点(保留结构)
2. 任意指定范围的屏蔽罩
3. 多个树实例的 同步加载时的屏蔽罩,例如拖拽的时候,同步更新数据是个必须的功能。
4. 具有完整的封装及可扩展性。
1. 搜索过滤树节点(保留结构)
2. 任意指定范围的屏蔽罩
3. 多个树实例的 同步加载时的屏蔽罩,例如拖拽的时候,同步更新数据是个必须的功能。
4. 具有完整的封装及可扩展性。
/** * * @param {} conf * @param {} url * * @extend isExpandAllNode true 展开全部森林以及子 * @extend maskCfg {scope:xxx,msg:xxx} 屏蔽罩 配置 * * @extend syncMaskTree 同步屏蔽罩 目标数的引用 * @extend syncAimTree 设置目标同步树的 this['syncMaskTree'] 该属性 * 该属性为 true 则保留开关屏蔽罩逻辑 但不拥有开关权利 */ TreePanelFil = function(conf, url,params) { var scope = this; this['tpStack'] = -1 ;//用于 mask 屏蔽罩的控制 标识树完全展开时 为-1 this['maskLock'] = false ; //用于 mask 屏蔽罩的控制 树还在屏蔽中为 true /*1.用于 mask 屏蔽罩的控制 为true时 表示该组件被其他 对象同步了屏蔽罩 哪么 开启关闭效果由对方操作 *2.本组件 仍保留 开启关闭 屏蔽罩的逻辑 由this['tpStack'] this['maskLock']两参数体现出 *3.屏蔽罩的 关闭 应由所有 */ this['syncAimTree'] = false ; var src = url == null ? '#' : url; var treeData = new Ext.tree.TreeLoader({ url : src, requestMethod : 'POST', baseParams:params }); var config = { width : '100%', split : true, border : false, folderSort : true, autoScroll : true, loader : treeData, rootVisible : false, root : new Ext.tree.AsyncTreeNode({ text : '过滤器类型', url : src, expanded : true }) } Ext.apply(config, conf); TreePanelFil.superclass.constructor.call(this, config); treeData.on('beforeload', function(treeLoader, node) { if( conf.maskCfg!=null && conf.isExpandAllNode==true ){ scope.startupListenMask(conf.maskCfg); } if( conf.maskCfg!=null && conf.isExpandAllNode==false ){ scope.openMask(conf.maskCfg); } var id = node.attributes.id; var para = {id:id}; Ext.apply(treeLoader.baseParams , para); if( treeLoader.baseParams == null ){ treeLoader.baseParams = para; } treeLoader.url = node.attributes.url; return true; }, treeData); treeData.on('load' , function(treeLoader,node,response){ if(conf.isExpandAllNode){ scope.expandNodeAll( scope.getRootNode(),0 ); scope.noteChangeBeforeRoots(); } if( conf.maskCfg!=null && conf.isExpandAllNode==false ){ scope.closeMask(conf.maskCfg); } },treeData); } Ext.extend(TreePanelFil, Ext.tree.TreePanel, { /** * 重新加载数据 * @param params */ reloadData : function(params) { var scope = this; var root = this.getRootNode(); var treeLoad = this.getLoader(); if( params!=null ) treeLoad.baseParams = params; treeLoad.load(root, function(){}); this.expandAll(); }, /** * @private * 监听 屏蔽罩 在适当的时候关闭 * 1.在树完全展开后关闭 * @param {} mask * @param {} msg */ startupListenMask : function( maskCfg){ var scope = this; this['tpStack'] = 0 ; scope.openMask(maskCfg); var interval = setInterval(function() { if ( scope['tpStack'] == -1 ) { scope.closeMask(maskCfg); scope['maskLock'] = false; clearInterval(interval); } }, 200); }, /** * @private * 开启屏蔽罩 * @param {} maskCfg */ openMask : function(maskCfg){ this['maskLock'] = true; if( this['syncAimTree']!=true ){ maskCfg.scope.el.mask( maskCfg.msg ); } }, /** * @private * 关闭屏蔽罩 * @param {} maskCfg */ closeMask : function(maskCfg){ var scope = this ; if( scope['syncMaskTree']!=null ){ var interval = setInterval(function() { if ( scope['syncMaskTree'].isRescindLockMask() ) { if( this['syncAimTree']!=true ){ maskCfg.scope.el.unmask(true); } clearInterval(interval); } }, 200); }else{ if( this['syncAimTree']!=true ){ maskCfg.scope.el.unmask(true); } this['maskLock'] = false; } }, /** * @public * 获取 该树是否已经解除 屏蔽罩 */ isRescindLockMask : function(){ if( this['tpStack']==-1 && this['maskLock'] == false ){ return true ; }else{ return false ; } }, /** * @public * 与其他树组件 同步屏蔽罩 * @param {} tree * @param {} maskCfg */ syncListenMask : function(tree){ this['syncMaskTree'] = tree; tree.setAmiSynListenMask(); }, /** * 设置目标同步树的 this['syncMaskTree'] 该属性 * 该属性为 true 则保留开关屏蔽罩逻辑 但不拥有开关权利 * */ setAmiSynListenMask : function(){ this['syncAimTree'] = true ; }, /** * 展开所有的 节点 */ expandNodeAll : function(rootNode,index) { this['tpStack'] = this.setTpStack(index); var scope = this; rootNode.expand(true); var childs = rootNode.childNodes; for (var i = 0; i < childs.length; i++) { this['tpStack'] = scope.expandNodeAll(childs[i], (index+1) ); } this['tpStack'] = this.setTpStack(index); if( this['tpStack'] == 0 ) this['tpStack'] = -1; }, setTpStack : function(inx){ var tmp = this['tpStack']; this['tpStack'] = inx ; return this['tpStack']; }, /** * 过滤显示节点 * * @param {} * text */ filterNodeByText : function(text) { var scope = this; if (this[this.id + 'filterNode'] == null) { this[this.id + 'filterNode'] = new Ext.tree.TreeFilter( this, { clearBlank : true, autoClear : true }); } var filter = this[this.id + 'filterNode']; this.expandAll(); filter.filterBy(function(n) { if (text == null) return true; if (text == "") return true; var str = n.attributes.text; var newStr = str.substring(0, text.length); if (newStr == text) return n; if (n.childNodes != null && n.childNodes.length > 0) { return scope.filterParse(n, text); } else return false; }); }, /** * 该方法必须配合 Ext.tree.TreeFilter 组件使用 递归过滤解析 like 匹配 如果所有子及无限级下级的子 * 没有匹配则返回false * * @return 返回 */ filterParse : function(node, text) { var str = node.attributes.text; var newStr = str.substring(0, text.length); if (newStr == text) return node; var nodes = node.childNodes; if (nodes == null) return false; var tNode = null; for (var i = 0; i < nodes.length; i++) { if ((tNode = this.filterParse(nodes[i], text))) { return tNode; } } return false; } });
发表评论
-
extjs grid设置某行字体颜色 行颜色
2010-05-19 21:42 1913.x-grid-record-red table{//字体 ... -
ext logon
2009-10-21 23:15 1106<html> <head> ... -
ext form 表单提交数据的方法小结
2009-10-21 22:13 1898EXT的form表单ajax提交(默认提交方式) fu ... -
ext例子
2009-10-10 09:37 839http://www.myext.cn/ -
EXTjs 文件压缩
2009-09-24 21:08 1736之前曾使用过的办法有gzip(我记性不是很好,就是放在IIS中 ... -
解决Extjs文件太大的问题
2009-09-24 10:09 3566在使用Extjs过程中,ext-all.js文件太大,在网络环 ... -
ComboBoxTree
2009-07-25 22:34 3799参考别人的改的 Ext.namespace(" ... -
SearchField
2009-07-18 19:14 2543/* * Ext JS Library 2.1 * ... -
PagingToolbar PageSizePlugin
2009-07-18 14:10 2084/** * Page Size Plugin for ... -
PagingToolbar 扩展
2009-07-18 13:52 2252Ext.namespace('Ext.ux.PagingT ... -
一个扩展的 GridPanel
2009-07-14 14:43 1176分页后可保存checkbox的 ... -
ext 简易上传控件
2009-07-14 14:39 1752//*************************** ... -
extJs之下拉框联动
2009-07-14 14:37 1832// 第一个下拉框 var parentStore ... -
combtree
2009-07-14 14:34 1054var comboxWithTree = new Ext. ... -
ext treePanel 更换图标 总结
2009-07-14 14:33 70471.动态更换图标: 代码 node.on('click', ... -
EXT 一个panel与tree结合读数据库json格式的例子
2009-07-13 13:37 2877var Tree = Ext.tree; Ext.onR ... -
ext3.0 dwrproxy 兼容2.x dwrproxy用法
2009-07-12 21:02 2790经测试 可以用,并且做了修改可以兼容以前的代码格式 Ex ... -
spket Eclipse 安装
2009-07-11 12:40 2277spket最好用了,而且它还支持ext,安装起来很简单.... ... -
ext3.0 ext direct
2009-07-11 11:14 2961具体的工程步骤: 首先,我们来搭建WEB服务端的程序: 这时, ... -
ext+dwr DynamicGridPanel 封装 态创建ext grid
2009-07-06 16:55 3678封装一个动态grid 继承Ext.grid.GridPanel ...
相关推荐
7.5.11 树节点:ext.data.nodeinterface与ext.data.tree / 364 7.5.12 store的方法 / 366 7.5.13 store的事件 / 368 7.5.14 store管理器:ext.data.storemanager / 369 7.6 综合实例 / 369 7.6.1 远程读取json...
10.12 表格与树形的结合——Ext.ux.tree.ColumnTree 第11章 其他布局类简介 11.1 标准布局类 11.1.1 折叠布局——AccordionLayout 11.1.2 边框布局——BorderLayout 11.1.3 卡片式布局——CardLayout 11.1.4 ...
10.12 表格与树形的结合——Ext.ux.tree.ColumnTree 第11章 其他布局类简介 11.1 标准布局类 11.1.1 折叠布局——AccordionLayout 11.1.2 边框布局——BorderLayout 11.1.3 卡片式布局——CardLayout 11.1.4 ...
-ExtAspNet扩展的多语言包在js\languages\extaspnet目录下,目前只有en,zh_CN,zh_TW三种实现 -你可以向其中添加自己的语言版本,并执行js\languages下的pack.bat打包,最后编译工程。 +2009-09-01 v2.0.9 ...
-ExtAspNet扩展的多语言包在js\languages\extaspnet目录下,目前只有en,zh_CN,zh_TW三种实现 -你可以向其中添加自己的语言版本,并执行js\languages下的pack.bat打包,最后编译工程。 +2009-09-01 v2.0.9 ...
javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。 javax....
javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。 javax....
javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。 javax....
javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。 javax....
javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。 javax....
javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。 javax....
javax.naming.directory 扩展 javax.naming 包以提供访问目录服务的功能。 javax.naming.event 在访问命名和目录服务时提供对事件通知的支持。 javax.naming.ldap 提供对 LDAPv3 扩展操作和控件的支持。 javax....