如图,用getCheckedNodes()方法连“八三西里”也返回,如何只返回完全选中的checkbox?
张金富 回答于 2011-08-14 22:07 (9个月前)
引用来自“dyhunter”的答案
关于半选节点,在3.0中能提供简单判断的方法,2.6只好你自己判断了,treeNode.checked=true && treeNode.check_True_Full = false 就是半选节点,你可以在 getCheckedNodes方法得到的结果中自行过滤一下,就可以了;
补充一下,在百度空间上你问的问题和你这个还不完全一样,至少详细程度不一样,看你这个需求,你应该是希望将打钩的、且没有加载子节点的父节点获取下来,那么只需要看看 getCheckedNodes方法中的节点 treeNode.isParent == true && (!treeNode.nodes || treeNode.nodes.length==0) 满足这种的都是父节点且未加载过子节点的。
如果还有问题就继续沟通吧
可能是我没有描述清楚,我觉得这个问题具有普遍意义,有必要详细描述一下,可能对您有意义。
公司的项目分为小区、楼宇、单元、用户四个级别。图片中的“迎秋里”、“八三西里”都是小区名。项目实际上只需要获得用户节点,但是一次加载在IE6下性能太低,所以改用异步加载。
1、只有异步加载才存在这种问题
2、考虑一下用户情况,比如现在只展开小区级别的节点,然后用户选中“八三西里”,意思是选中“八三西里”所有的用户,然后执行查询。现在并没有展开“八三西里”节点,数据为空,那么我在获得节点后就需要根据节点层次(小区)查询相应的数据库表。这是必需的。
3、然后问题出来了,getCheckedNodes方法返回的节点包含半选的节点。那么我在得到选中的节点后再查询一遍数据库就会包含未选中的节点数据。以本图为例,一号楼并未选中,可是“八三西里”选中了,那么就会查询“八三西里”所有的用户。
公司的项目分为小区、楼宇、单元、用户四个级别。图片中的“迎秋里”、“八三西里”都是小区名。项目实际上只需要获得用户节点,但是一次加载在IE6下性能太低,所以改用异步加载。
1、只有异步加载才存在这种问题
2、考虑一下用户情况,比如现在只展开小区级别的节点,然后用户选中“八三西里”,意思是选中“八三西里”所有的用户,然后执行查询。现在并没有展开“八三西里”节点,数据为空,那么我在获得节点后就需要根据节点层次(小区)查询相应的数据库表。这是必需的。
3、然后问题出来了,getCheckedNodes方法返回的节点包含半选的节点。那么我在得到选中的节点后再查询一遍数据库就会包含未选中的节点数据。以本图为例,一号楼并未选中,可是“八三西里”选中了,那么就会查询“八三西里”所有的用户。
4、存在数据重复问题,但是不影响正常使用。
您说的方法我明天试一下,有问题再请教您