`
Mint_Grass
  • 浏览: 63247 次
  • 性别: Icon_minigender_1
  • 来自: 新疆
社区版块
存档分类
最新评论

EXT2.0 checkbox树的扩展(级联)_测试及解决方案

EXT 
阅读更多
原文:
EXT2.0 checkbox树的扩展(支持单选,级联多选,只选叶子等)
http://www.iteye.com/topic/164426

最近在做ExtTree相关应用, 碰到了Checkbox级联选择的问题, 发现Ext中未处理级联问题. 刚开始修改写了一份, (不是很完善), 朋友给发了些ExtJs的资料(断网的日子, 找点资料不容易), 看到了 [xiexueze] 对CheckBox树的扩展. 感觉还不错, 在使用的过程中, 发现了个小Bug. 具体情况如下:



测试环境(主要是数据格式):
加载数据:
一次性加载所有数据
特殊情况:
加载上来的数据, 直接包含各节点的checked属性 (例如: 分配权限, 把用户已分配的功能节点checked=true, 未分配的功能checked=false)
操作情况:
情况1. 加载上来的数据, 只展开RootNode的下一级.
* 此时级联选中没有问题
情况2. 当所有数据已加载(tree.load事件)成功后, 展开所有节点(tree.expandAll()).
* 问题产生.
2.1 把任意一个非leaf节点,先折叠起来. 再改变此目录的check状态. 当前目录不会自动展开,选中或取消选中所有子节点. (不仅是这种加载方式或数据格式. 任意一个已展开过的目录, 这样操作都会有此问题存在)
2.2 特别是针对, 后台返回的数据, 本身就带有checked属性的情况. 问题将更明显. (容易发生当前目录的check状态和其leaf的对应不上的情况.)

针对以上问题, 查看其源码(TreeCheckNodeUI.js) 140行发现. 代码如下:
if( !n.expanded && !n.childrenRendered ) {			// n为当前点击的node
	n.expand(false,false,this.childCheck);
}else {
	this.childCheck(n);  
}


这里只验证了如果当前节点处于未展开状态并且其子节点未rednder时,才展开此节点并选中或取消选中child节点.
这里简单解决方案: (即使node.childRendered, 也展开)
if( !n.expanded && !n.childrenRendered ) {
	n.expand(false,false,this.childCheck);
}else {
	if(!n.isLeaf() && !n.isExpanded())		// 修改, 解决对已render的节点级联问题
		n.expand(false, false, this.childCheck);
	this.childCheck(n);  
}

为保持源码的逻辑, 修改后的代码如上.(考虑到作者是否还有其它的含意)
但理论上来说: 就可以去掉这个判断了, 直接写成:
if(!n.isLeaf() && !n.isExpanded())		// 修改, 解决对已render的节点级联问题
	n.expand(false, false, this.childCheck);
this.childCheck(n);

因时间关系, 这里没有考虑其它的情况(如leaf节点), 第二种写法的代码未测!


这两天在做其它功能, 发现,好像还没有从根本上解决问题. 问题的关键好像是在 展开与折叠 事件. 等有空了,再调试这个细节问题.
1
0
分享到:
评论

相关推荐

    EXT2.0中文教程

    9.2. 带全选的checkbox树形CheckBoxTree 9.3. 带全选的checkbox的grid 9.4. fisheye 9.5. 可以设置时间的日期控件 9.6. JsonView实现用户卡片拖拽与右键菜单 9.7. 下拉列表选择每页显示多少数据 10. 撕裂吧!...

    ext 2.0 form demo

    EXT 2.0 Form Demo 知识点详解 EXT是一个流行的JavaScript库,它专注于构建功能丰富的、用户界面复杂的Web应用程序。EXT 2.0版本在当时是一个重要的里程碑,引入了许多新特性和改进,特别是在表单处理方面。在这个...

    Ext2.0 form使用实例的例程

    Ext 2.0的表单组件提供了一整套完整的解决方案,包括各种输入字段、按钮、标签、提示信息等。下面将详细解析这些知识点: 1. **表单(FormPanel)**:这是Ext 2.0中的核心表单组件,它是一个容器,可以包含各种表单...

    带CheckBox和级联操作的Tree

    带CheckBox和级联操作的Tree 带CheckBox和级联操作的Tree 带CheckBox和级联操作的Tree

    Ext 树的级联选择扩展插件使用说明

    总结来说,"Ext 树的级联选择扩展插件使用说明"涉及到的是在Ext JS环境中,如何利用自定义的`TreeCheckNodeUI.js`插件实现树形控件的级联选择功能。通过理解并运用上述步骤,开发者可以创建出交互性强、用户体验良好...

    ASP.NET2.0动态网站设计教程__基于VB+Access

    ASP.NET 2.0提供了丰富的服务器控件,如文本框(TextBox)、按钮(Button)、复选框(CheckBox)、列表框(ListBox)等,这些控件可以方便地处理用户交互。事件驱动编程是ASP.NET的核心,理解控件的生命周期和事件...

    纯JS+HTML写的checkBox Tree 级联选中 好用无BUG

    这个"纯JS+HTML写的checkBox Tree 级联选中"实例,解决了其他示例中可能存在的BUG,提供了一个稳定、好用的解决方案。 在该实现中,主要涉及以下几个关键知识点: 1. **HTML结构**: - 树形结构通常由`<ul>`和`...

    Ext2.0示例讲解

    扩展到更复杂的需求,例如在表格中添加CheckBox选中功能,可以创建一个CheckboxSelectionModel并将其添加到ColumnModel中: ```javascript var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid...

    Ext2.0框架的grid使用

    本文将深入探讨Ext2.0框架下Grid的使用方法,涵盖其基本配置、数据绑定以及高级特性如CheckBox的集成,旨在帮助开发者快速掌握并高效利用这一工具。 #### Grid组件概述 Grid组件在Ext2.0框架中主要用于展示表格...

    Ext2.0框架的Grid使用介绍

    ### Ext2.0框架的Grid使用介绍 #### 一、Ext2.0框架概述 Ext2.0是一款基于JavaScript的库,它提供了大量的用户界面组件,使得开发人员能够轻松地构建出高度交互式的Web应用程序。相比其他框架如YUI等,Ext2.0拥有...

    Flex tree+checkbox可实现级联勾选 修改

    flex tree+checkbox可实现级联勾选 修改后 修改CheckTreeDemoRenderer.as这个文件中 while (!cursor.afterLast){ if (cursor.current.@state == STATE_CHECKED) { noChecks++; }else if (cursor.current.@state =...

    Ext_Net_CheckboxGroup 勾选、全选、反选和限制勾选

    Ext_Net_CheckboxGroup 勾选、全选、反选和限制勾选

    C#树形菜单的CheckBox级联选择

    实现树形菜单的CheckBox级联选择功能是增强用户交互性的重要手段,它允许用户通过选择一个节点来自动选中或取消选中其所有子节点,以及可能的父节点。这个特性通常在多级选择场景中非常有用。 首先,我们要理解`...

    ExpandAbleListView+checkbox数组方式级联,点击选择顶部文本显示,可删除

    ExpandAbleListView+checkbox数组方式级联,外层列表可展开收起,内层列表使用checkbox多选框,点击之后可在顶部的gridlayout显示,顶部显示的选中与checkbox选中状态关联,点击顶部选中的item,可取消选中状态,...

    struts2.0 checkbox标签使用问题

    在描述中提到的博客链接(由于实际无法访问,这里仅作理论分析),博主可能分享了如何解决在使用Struts2.0的`checkbox`标签时遇到的具体问题,可能包括值的获取、动态生成复选框、或者与其他组件(如`<s:form>`)的...

    js实现checkbox级联选择

    使用javascript实现checkbox级联选择

    jQuery_treetable实现checkbox树

    jQuery_treetable实现checkbox树,实现多级联动,适用于权限树等各类需要树形结构数据的场景

    CheckBoxDataGridView_CheckBoxDataGridView_zip_streetoma_

    这个压缩包包含了一个名为`CheckBoxDataGridView`的文件,该文件可能是一个解决方案文件或者源代码文件,用于演示如何在`DataGridView`中集成复选框功能。 在Windows Forms开发中,`DataGridView`是用于展示表格...

    jd.rar_CheckBoxList_DEMO_京东

    CheckBoxList通常用于用户界面中,让用户能够多选一个列表中的选项。 【描述】描述提到"jd demo 关于php的代码里面是关于一些京东的接口里面的代码包含了一些重要",这表明这个项目不仅包含了PHP代码,还涉及到京东...

Global site tag (gtag.js) - Google Analytics