问题描述
TreeView如何实现这样的功能1.选中父节点子节点全部选中2.选中部分子节点父节点是方框选中半选中3.选中全部子节点父节点选中就像Windows一样
解决方案
解决方案二:
functionOnTreeNodeChecked(){varele=event.srcElement;if(ele.type=='checkbox'){varchildrenDivID=ele.id.replace('CheckBox','Nodes');vardiv=document.getElementById(childrenDivID);if(div==null)return;varcheckBoxs=div.getElementsByTagName('INPUT');for(vari=0;i<checkBoxs.length;i++){if(checkBoxs[i].type=='checkbox')checkBoxs[i].checked=ele.checked;}if(ele.parentNode.parentNode.parentNode.parentNode.parentNode.id=='<%=TreeUser.ClientID%>'){if(current==null){current=ele;}else{current.checked=false;childrenDivID=current.id.replace('CheckBox','Nodes');div=document.getElementById(childrenDivID);if(div!=null){checkBoxs=div.getElementsByTagName('INPUT');for(vari=0;i<checkBoxs.length;i++){if(checkBoxs[i].type=='checkbox')checkBoxs[i].checked=false;}}if(current==ele){current=null;}else{current=ele;}}}}}
解决方案三:
不好意思,帮不上忙,还没试过半选中
解决方案四:
这个我原来的项目中用到过。我找找给你复制下
解决方案五:
有半选中那就不能用自带的Checkbox了可以在几点前面加图片没选中图片选中图片半选中图片根据不同的情况换图片
解决方案六:
引用3楼jason_dct的回复:
这个我原来的项目中用到过。我找找给你复制下
大哥找到没我还是不知道如何半选中谢谢
解决方案七:
这个估计得自己写控件了,因为treeview的复选样式就两种状态,不像checkedlistbox有三种
解决方案八:
关注一下
解决方案九:
使用checkstate给checkbox赋值,有三种状态。选中checked不选中unchecked不确定interminate(类似这个名字)--你要求的半选中。
解决方案十:
关注呵呵
解决方案十一:
不好意思,看错题目了。这个问题我的解决办法是给treeviwe的imagelist添加3个分别表示三个状态的image通过设置选择的image来表示其选中状态。
解决方案十二:
//改变所有子节点的状态publicstaticvoidCheckAllChildNodes(TreeNodepn,boolIsChecked){foreach(TreeNodetninpn.Nodes){tn.Checked=IsChecked;if(tn.Nodes.Count>0){CheckAllChildNodes(tn,IsChecked);}}}//改变父节点的选中状态publicstaticvoidCheckParentNode(TreeNodecurNode,boolIsChecked){boolbChecked=true;if(curNode.Parent!=null){foreach(TreeNodenodeincurNode.Parent.Nodes){if(node.Checked==false){bChecked=false;break;}}if(bChecked){curNode.Parent.Checked=true;CheckParentNode(curNode.Parent,true);}else{curNode.Parent.Checked=false;CheckParentNode(curNode.Parent,false);}}}
解决方案十三:
半选中只能用其他控件treeview没有半选中状态!
解决方案十四:
该回复于2011-08-29 09:11:32被版主删除
解决方案十五:
functionpostBackObject(){varo=window.event.srcElement;if(o.tagName=="INPUT"&&o.type=="checkbox"){//点击treeview的checkbox是否触发vard=o.id;//获得当前checkbox的idvare=d.replace("CheckBox","Nodes");//通过查看脚本信息,获得包含所有子节点的div的idvardiv=window.document.getElementById(e);//获得div对象if(div!=null){//如果不为空,表示存在子节点varcheck=div.getElementsByTagName("INPUT");//获得div中所有的已input开始的标记for(i=0;i<check.length;i++){if(check[i].type=="checkbox"){check[i].checked=o.checked;//子节点和父节点的状态一致,即全选}}}else{//点击子节点的时候,是父节点的状态改变,即不为全选vardivid=o.parentElement.parentElement.parentElement.parentElement.parentElement;//子节点所在的divvarid=divid.id.replace("Nodes","CheckBox");//获得根节点的idvarcheckbox=divid.getElementsByTagName("INPUT");//获得所有子节点数vars=0;for(i=0;i<checkbox.length;i++){if(checkbox[i].checked){s++;}}if(s==checkbox.length){//如果全部选中或选择的是另外一个根节点的子节点,window.document.getElementById(id).checked=true;//则开始的根节点仍为选中状态}else{window.document.getElementById(id).checked=false;}}}}额,没有半选中的
解决方案:
做三种状态图片控件然后传值判断