Ext树控件第一次勾选父节点子节点没选中

  项目中同事提出了这样一个bug,为了解决这个问题,牛逼闪闪的码农登场了,该码农专制各种公交抢上抢下抢座位,专制各种偷鸡摸狗,专制各种广场舞大妈扰民,专制各种不服,总之哪里有不平哪里就有撒哥的身影

扯淡结束,进入今天的正题

  问题:

    第一次勾选父节点子节点竟然没选中,逆天了啊

     

  初步分析:

    可能是之前代码的逻辑错误造成的,随进入调试阶段...

    调试中发现该参数为空(原来写代码的也太没素质了),

    

    没有内容然后想到没有内容导致下面的子节点不能便利出来,所以出来后没有选中,嘿嘿

    然后加上该参数,接着查看然后发现bug依然存在,这次该参数有了,但是里面的元素还是没有啊,纠结....

  深入分析:

    

 1 rightnode.on(‘checkchange‘, function(node, checked) {
 2         node.expand();
 3         node.attributes.checked = checked;
 4         var flag = false;
 5         for (var i = 0; i < changemark.length; i++)
 6             if (changemark[i] == node.attributes.id) {
 7             flag = true;
 8             break;
 9         }
10         if (!flag)
11             changemark.push(node.attributes.id);
12
13         node.eachChild(function(child) {
14             child.ui.toggleCheck(checked);
15             child.attributes.checked = checked;
16             var flag = false;
17             for (var i = 0; i < changemark.length; i++)
18                 if (changemark[i] == node.attributes.id) {
19                 flag = true;
20                 break;
21             }
22             if (!flag)
23                 changemark.push(node.attributes.id);
24
25             child.fireEvent(‘checkchange‘, child, checked);
26         });
27     }, rightnode);

    逐行看代码,怀疑这行代码有问题,节点展开事件,Ext可能把它做成异步的,上网一查还真是.

    node.expand();

    网上一哥们说这样写就行了,延长一毫秒

    setTimeout(function () { nodeExpand(node); }, 1); //延迟一毫秒执行

    但是经过本屌测试,这明显不行,然后延长至十毫秒,解决问题.

  注意事项:

    1.setTimeout 执行的函数带参数的写法   思维拓展:   1.node.expand();我有想过这个函数有没有回调函数,如果在回调函数里面处理,起步美哉,但是官方API没有查到,    如果哪位大神知道好的解决方法,望告诉小弟.

  

Ext树控件第一次勾选父节点子节点没选中

时间: 2024-10-01 03:13:56

Ext树控件第一次勾选父节点子节点没选中的相关文章

EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中

需求:EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中 效果: /**   * 给树增加onCheck事件,首先使用cascadeCheck:false属性禁止全选,   * 然后获取当前选中节点的所有子节点,在判断其拥有子节点时对其所有字节点   * 进行遍历操作.在easyui中树节点的是否选中不是由checked:true   * 属性来控制,而是由class tree-checkbox0   * 和tree-checkbox1进行控制.--by wk   */  

C# TreeView控件 父节点子节点勾选变化关联

项目用到了TreeView控件,父节点子节点勾选需要关联.子节点勾选,父节点同步.父节点勾选,所有子节点都勾选,并递归.网上找了一圈,好多代码都不满足要求.节点勾选,向下递归子节点,都实现了.节点勾选,向上递归,父节点同步勾选,也实现了.但是节点去除勾选,应该判断其同级所有节点,若同级节点都处于未勾选状态,则应该去除父节点勾选状态,并向上递归.这一点,没有找到合适的代码.就自己写了这部分代码.仅仅只是实现这个效果,代码还有优化的空间,后续有时间再来修改了. private void treeVi

ASP.NET TreeView控件父子勾选框联动勾选

摘要:ASP.NET TreeView控件父子勾选框联动勾选 后置代码: this.TreeView1.Attributes.Add("onclick", "CheckEvent();"); JS 代码: function setParentState(objNode) { ?? var objParentDiv = WebForm_GetParentByTagName(objNode, "div"); ?? if (objParentDiv =

Android 实现自定义多级树控件和全选与反选的效果

博文开始之前,首先要感谢大牛:(lmj623565791),本博文是在其博文http://blog.csdn.net/lmj623565791/article/details/40212367基础上进一步的修改而来. 本博文主要是利用ListView实现多级树控件,并通过CheckBox来对各节点的全选与反选的功能,首先来看一下效果: 对于多级树的显示其实就是通过数据中各个节点的关系,通过不同的缩进来达到树的效果.而数据中主要要把握id,父节点pId,name的关系,来显示其效果. 代码实现如下

Android 实现自己定义多级树控件和全选与反选的效果

博文開始之前,首先要感谢大牛:(lmj623565791),本博文是在其博文http://blog.csdn.net/lmj623565791/article/details/40212367基础上进一步的改动而来. 本博文主要是利用ListView实现多级树控件,并通过CheckBox来对各节点的全选与反选的功能,首先来看一下效果: 对于多级树的显示事实上就是通过数据中各个节点的关系,通过不同的缩进来达到树的效果.而数据中主要要把握id,父节点pId.name的关系,来显示其效果. 代码实现例

基于MVC+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍使用EasyUI的树控件构建Web界面的相关经验. 在很多界面设计上,我们可能都需要引入树列表控件,这个控件可以用zTree来实现,也

基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍使用EasyUI的树控件构建Web界面的相关经验. 在很多界面设计上,我们可能都需要引入树列表控件,这个控件可以用zTree来实现,也

(转)基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面

http://www.cnblogs.com/wuhuacong/p/3669575.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍使用EasyUI的树控件构建Web界面

100行代码解析Dojo树控件拖拽案例

案例设定: 创建2个树控件,左右排列. 使用拖动的方式,将树节点从左侧树控件拖拽的右侧树控件. 拖拽过程中右侧树控件要进行验证,确认是否可以方式拖拽中的节点. 放置的处理,识别要放置的节点,获取其信息并动态创建新的节点(基于基础类型进行实例化的过程). 右侧树控件内(实例化之后的节点),同类型节点间支持拖动排序. Dojo版本 1.10.3 图例1:创建2个树控件,左右排列. 图例2.3: 使用拖动的方式,将树节点从左侧树控件拖拽的右侧树控件. 拖拽过程中右侧树控件要进行验证,确认是否可以方式拖