使用TreeView,都是checkbox结构,如何选择父节点后使子节点也自动选上

问题描述

使用TreeView都是checkbox结构如何选择父节点后使子节点也自动选上

解决方案

解决方案二:
遍历子节点喽
解决方案三:
privatevoidtreeView1_Check(objectsender,TreeViewEventArgse){if(e.Node.Nodes.Count>0){foreach(TreeNodenodeine.Node.Nodes){node.Checked=e.Node.Checked;}}}
解决方案四:
用递归在AfterCheck中加上selectnode(e.Node,e.Node.Checked)PrivateSubselectnode(ByValnAsTreeNode,ByValckAsBoolean)IfNot(n.Nodes.Count=0)Thenn=n.LastNodeWhileNot(nIsNothing)n.Checked=ckselectnode(n,ck)n=n.PrevNodeEndWhileEndIfEndSub
解决方案五:
这个必须你在服务器端自行写事件处理来完成,没有自动化的实现。
解决方案六:
服务器:TreeView1.Attributes.Add("OnClick","OnTreeNodeChecked(event)");客户端脚本如下:/***************************************************************************************Name:ClientJavascriptforASP.NET2.0TreeViewDescription:ASP.NET2.0TreeViewlackforclientoperation.Thissetoffunctionsprovidesomesupports.Includes:*getnode*changecheckboxstatusofparentandchildnodesAuthor:Zhangtao,zhangtao.it@gmail.comDate:2006-03-30Commonts:***************************************************************************************/functionTV2_SetChildNodesCheckStatus(node,isChecked){varchildNodes=TV2i_GetChildNodesDiv(node);if(childNodes==null)return;varinputs=WebForm_GetElementsByTagName(childNodes,"INPUT");if(inputs==null||inputs.length==0)return;for(vari=0;i<inputs.length;i++){if(IsCheckBox(inputs[i]))inputs[i].checked=isChecked;}}functionTV2_NodeOnChildNodeCheckedChanged(tree,node,isChecked){if(node==null)return;varchildNodes=TV2_GetChildNodes(tree,node);if(childNodes==null||childNodes.length==0)return;varisAllSame=true;for(vari=0;i<childNodes.length;i++){varitem=childNodes[i];varvalue=TV2_NodeGetChecked(item);if(isChecked!=value){isAllSame=false;break;}}varparent=TV2_GetParentNode(tree,node);if(isAllSame){TV2_NodeSetChecked(node,isChecked);TV2_NodeOnChildNodeCheckedChanged(tree,parent,isChecked);}else{TV2_NodeSetChecked(node,false);TV2_NodeOnChildNodeCheckedChanged(tree,parent,false);}}functionTV2_GetNode(tree,element){varid=element.id.replace(tree.id,"");id=id.replace(element.type,"");id=tree.id+id;varnode=document.getElementById(id);if(node==null)//leafnode,no"A"nodereturnelement;returnnode;}functionTV2_GetParentNode(tree,node){vardiv=WebForm_GetParentByTagName(node,"DIV");//Thestructureofnode:<table>informationofnode</table><div>childnodes</div>vartable=div.previousSibling;if(table==null)returnnull;returnTV2i_GetNodeInElement(tree,table);}functionTV2_GetChildNodes(tree,node){if(TV2_NodeIsLeaf(node))returnnull;varchildren=newArray();vardiv=TV2i_GetChildNodesDiv(node);varindex=0;for(vari=0;i<div.childNodes.length;i++){varelement=div.childNodes[i];if(element.tagName!="TABLE")continue;varchild=TV2i_GetNodeInElement(tree,element);if(child!=null)children[index++]=child;}returnchildren;}functionTV2_NodeIsLeaf(node){return!(node.tagName=="A");//Todo}functionTV2_NodeGetChecked(node){varcheckbox=TV2i_NodeGetCheckBox(node);returncheckbox.checked;}functionTV2_NodeSetChecked(node,isChecked){varcheckbox=TV2i_NodeGetCheckBox(node);if(checkbox!=null)checkbox.checked=isChecked;}functionIsCheckBox(element){if(element==null)returnfalse;return(element.tagName=="INPUT"&&element.type.toLowerCase()=="checkbox");}functionTV2_GetTreeById(id){returndocument.getElementById(id);}functionTV2i_GetChildNodesDiv(node){if(TV2_NodeIsLeaf(node))returnnull;varchildNodsDivId=node.id+"Nodes";returndocument.getElementById(childNodsDivId);}functionTV2i_GetNodeInElement(tree,element){varnode=TV2i_GetNodeInElementA(tree,element);if(node==null){node=TV2i_GetNodeInElementInput(tree,element);}returnnode;}functionTV2i_GetNodeInElementA(tree,element){varas=WebForm_GetElementsByTagName(element,"A");if(as==null||as.length==0)returnnull;varregexp=newRegExp("^"+tree.id+"n\d+$");for(vari=0;i<as.length;i++){if(as[i].id.match(regexp)){returnas[i];}}returnnull;}functionTV2i_GetNodeInElementInput(tree,element){varas=WebForm_GetElementsByTagName(element,"INPUT");if(as==null||as.length==0)returnnull;varregexp=newRegExp("^"+tree.id+"n\d+");for(vari=0;i<as.length;i++){if(as[i].id.match(regexp)){returnas[i];}}returnnull;}functionTV2i_NodeGetCheckBox(node){if(IsCheckBox(node))returnnode;varid=node.id+"CheckBox";returndocument.getElementById(id);}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;}}}
解决方案七:
遍历,判断,处理,LSjs强
解决方案八:
二楼的不行,,你那样只能选择第二级的菜单,,第三级以后的都不会选到//下面这个方法是树的点击事件privatevoidTreeView_AfterCheck(objectsender,TreeViewEventArgse){if(e.Action!=TreeViewAction.Unknown){if(e.Node.Nodes.Count>0){pCheckAllChildNodes(e.Node,e.Node.Checked);}pCheckParentNodes(e.Node);}}//选择父节点privatevoidpCheckParentNodes(TreeNodetreeNode){TreeNode_oParentNode=treeNode.Parent;while(_oParentNode!=null){bool_bChecked=false;for(int_k=0;_k<_oParentNode.Nodes.Count;_k++){if(_oParentNode.Nodes[_k].Checked!=_bChecked){_bChecked=!_bChecked;break;}}_oParentNode.Checked=_bChecked;_oParentNode=_oParentNode.Parent;}}//选择子节点privatevoidpCheckAllChildNodes(TreeNodetreeNode,boolnodeChecked){foreach(TreeNodenodeintreeNode.Nodes){node.Checked=nodeChecked;if(node.Nodes.Count>0){pCheckAllChildNodes(node,nodeChecked);}}}

时间: 2024-10-03 08:15:39

使用TreeView,都是checkbox结构,如何选择父节点后使子节点也自动选上的相关文章

treeview-ztree 如何实现双击某节点使该节点和其子节点都被选中

问题描述 ztree 如何实现双击某节点使该节点和其子节点都被选中 如题.树已经实行异步加载,有三个二级子节点,想要实现双击二级子节点使其三级子节点全部被勾选,双击展开已实现.请问该如何做? 解决方案 关于选中ztree节点zTree实现获取当前选中的第一个节点在同级节点中的序号zTree实现单独选中根节点中第一个节点

jQuery教程:选择父级下的子级元素

文章简介: 到目前为止,我写的jQuery教程已经到了第八章了,不知大家现在对jQuery是否还比较陌生,如果你还很陌生的话,没关系.css学习网也在教程的后面留下了作业或案例,希望朋友们能认真的完成作业认真的看案例.我相信大家一定能好好的驾驭这匹烈马的.  到目前为止,我写的jQuery教程已经到了第八章了,不知大家现在对jQuery是否还比较陌生,如果你还很陌生的话,没关系.css学习网也在教程的后面留下了作业或案例,希望朋友们能认真的完成作业认真的看案例.我相信大家一定能好好的驾驭这匹烈马

jquery实现点击TreeView文本父节点展开/折叠子节点_jquery

以前一个现在不用的帐号发布的随笔,现在人肉搬过来吧. 注册用户有一段时间了,一直很忙,到现在还没有写一篇,忽然觉的一定要花点时间记录和总结一些东西.好吧,就从这里开始了. 今天客户提出要点击菜单(TreeView实现的)的父级节点时,展开节点.心想这个应该是很常见的功能吧,特意google了一下,发现大部分是将的不是js实现的,有些js实现的写的麻烦,干脆自己写一个吧,应该不难的. 首先思路是,,让文本点击的时候执行左边'+'号的事件,查看源码看到,'+'号的事件是: javascript:Tr

ext tree checkbox 中选中父节点,如何让子节点不展开

问题描述 我做有关ext tree checkbox的项目,基本上没有是什么大问题,就是在选中父节点时,所有的子节点都会展开,求问怎样才能在选中父节点时,子节点还是处于收缩状态 问题补充:lizhi92574 写道 解决方案 还得把node.expand(); //展开方法去掉解决方案二:node.eachChild(function(child) { child.ui.checkbox.checked = checked; child.ui.checkbox.defaultChecked =c

TreeView 递归 去 一个节点下 所有 叶子节点的问题,在线等待高人帮忙,急~!

问题描述 我把没用的代码都去掉,核心代码就是下面的,点击树上的某个控件之后,用递归把其下面的所有叶节点全部取出来,但是出了错,在线等待高人解答错在哪里,或者直接告诉我应该怎么取//点击树上的某个节点protectedvoidtvCate_SelectedNodeChanged(objectsender,EventArgse){//利用递归获取他所有的子节点tn=tvCate.getSelectedNode();TreeNodetn2=newTreeNode();getLeafNode(tn,tn

Android 中CheckBox多项选择当前的position信息提交的示例代码

先给大家展示下效果图: 废话不多说了,下面通过示例代码给大家介绍checkbox 多项选择当前的position信息提交,具体代码如下所示: package com.dplustours.b2c.View.activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import andro

VB.NET Treeview 点击checkbox 在datagridview里面显示数据

问题描述 如何根据treeview选中的checkbox点击,将treeview的指定那层(最后一层)显示在DatagridView中并显示相关数据库表中的信息. 解决方案

mfc 如何通过checkbox控件选择文件夹路径

问题描述 mfc 如何通过checkbox控件选择文件夹路径 我创建一个mfc 工程, 如何通过checkbox控件弹出一个对话框选择文件夹路径,并获取该文件夹的路径.求大神指导 解决方案 勾上check box后,就调用跳出文件选择对话框 CString strFilePath; TCHAR pszBuffer[_MAX_PATH]; BROWSEINFO bi; LPITEMIDLIST pidl; bi.hwndOwner = NULL; bi.pidlRoot = NULL; bi.ps

SWT能否实现一颗多列数,每列都有checkbox?

问题描述 SWT能否实现一颗多列数,每列都有checkbox?类似如下: 解决方案 解决方案二:图没显示解决方案三:图片:解决方案四: 解决方案五:当然可以..解决方案六:给个例子,关键是树的其他列如查询列前面也能加checkbox解决方案七:已解决:在eclipseNebula项目中找到Grid模块,可以实现