TreeView 获取一个 节点 下的 所有 叶子节点的问题!

问题描述

选中某一节点后,我需要得到该节点下的所有叶子节点,包括子节点、孙子节点...中的所有叶子节点。做了一晚上都没有弄出来。我是用递归的,结果发现每次点一个节点之后,该节点下的子节点就自动少了一个,希望各位高人协助感激不尽啊!///<summary>///点击树控件///</summary>///<paramname="sender"></param>///<paramname="e"></param>protectedvoidtvCate_SelectedNodeChanged(objectsender,EventArgse){TreeNodetn=this.tvCate.SelectedNode;//若为根目录,则显示所有类别的数据if(tn.Parent==null){this.labMessage.Text="根";gvProductDataBind(PageSize,1,"");}//若为叶节点elseif(tn.ChildNodes.Count==0){this.labMessage.Text="叶";gvProductDataBind(PageSize,1,"andcate_Id="+tn.Value);}//既不为根也不为叶节点else{//利用递归获取他所有的子节点//TreeNodeCollectiontnCollection=newTreeNodeCollection();//TreeViewtv=newTreeView();TreeNodetn2=newTreeNode();getLeafNode(tn,tn2);//this.labMessage.Text=tnCollection.Count.ToString();stringcondition="";for(inti=0;i<tn2.ChildNodes.Count;i++){if(i==0){condition=condition+"andcate_Id="+tn2.ChildNodes[i].Value+"";}else{condition=condition+"orcate_Id="+tn2.ChildNodes[i].Value+"";}}gvProductDataBind(PageSize,1,condition);}}///<summary>///利用递归获取一个节点的所有叶子///</summary>///<paramname="tn">TreeNode</param>///<paramname="al">指针数组</param>protectedvoidgetLeafNode(TreeNodemyTn,TreeNodetn2){for(inti=0;i<myTn.ChildNodes.Count;i++){if(myTn.ChildNodes[i].ChildNodes.Count==0){tn2.ChildNodes.Add(myTn.ChildNodes[i]);this.labMessage.Text=this.labMessage.Text+""+tn2.ChildNodes.Count;}else{getLeafNode(myTn.ChildNodes[i],tn2);}}}

请各位高人告诉我错误再哪里,或者直接告诉我应该怎样获得,感激不尽

解决方案

解决方案二:
唉,没有高手愿意来看看吗?帮帮我啊!
解决方案三:
写的什么啊``看不懂``
解决方案四:
我把没用的代码都去掉,核心代码就是下面的,点击树上的某个控件之后,用递归把其下面的所有叶节点全部取出来,但是出了错,在线等待高人解答错在哪里,或者直接告诉我应该怎么取//点击树上的某个节点protectedvoidtvCate_SelectedNodeChanged(objectsender,EventArgse){//利用递归获取他所有的子节点tn=tvCate.getSelectedNode();TreeNodetn2=newTreeNode();getLeafNode(tn,tn2);}}///<summary>///利用递归获取一个节点的所有叶子///</summary>///<paramname="tn">TreeNode</param>///<paramname="al"></param>protectedvoidgetLeafNode(TreeNodemyTn,TreeNodetn2){for(inti=0;i<myTn.ChildNodes.Count;i++){if(myTn.ChildNodes[i].ChildNodes.Count==0){tn2.ChildNodes.Add(myTn.ChildNodes[i]);}else{getLeafNode(myTn.ChildNodes[i],tn2);}}}

时间: 2024-08-03 14:40:20

TreeView 获取一个 节点 下的 所有 叶子节点的问题!的相关文章

C# winform窗口 treeview 不同父节点下有同名子节点时会报错 ,请问处理让它不报错

问题描述 C#winform窗口treeview不同父节点下有同名子节点时会报错,请问处理让它不报错,求大神解答,3Q[/img][img=http://img.bbs.csdn.net/upload/201507/08/1436352773_60164.jpg] 解决方案 解决方案二: 解决方案三:子节点的name带上父节点的name解决方案四:还有没有其他方法呢解决方案五:每个node设置一个id,根据id去添加,总之你就是要避免key值重复解决方案六:引用2楼liluhua1126的回复:

在线求助,输入一个二叉树,如何从叶子节点向上逐层打印

问题描述 在线求助,输入一个二叉树,如何从叶子节点向上逐层打印二叉树的形式如下:ABCDEFG程序打印出,DEFGBCA用java如何实现,请高手指点一下,谢谢! 解决方案 解决方案二:先层次遍历,压入到堆栈或者向量什么的都可以...解决方案三:楼上的有没有代码示例呀?解决方案四:importjava.util.ArrayList;importjava.util.List;publicclassTest{publicstaticvoidmain(String[]args){//组装一颗树Node

如何获取一个路径下文件的读写权限

问题描述 如何获取一个路径下文件的读写权限?要代码谢谢 解决方案 解决方案二:一个目录下的文件可能权限多不一样的DirectoryInfodirInfo=newDirectoryInfo("D:\");foreach(FileInfofInfoindirInfo.GetFiles()){boolisReadOnly=fInfo.IsReadOnly;}解决方案三:不是我主要是想获取一下这个文件夹的读写权限,不是文件的请问该怎么写解决方案四:没弄过解决方案五:DirectoryInfod

我在脚本要获取一个select下拉框的集合值,然后我用我的变量值 等于这个下拉框里的值是 就选中这个为第一个

问题描述 就是获取一个selecet下拉框的对象里面的集合.我在脚本里我有个值,如果这个值等于下拉框里的值则让这个值为默认选中.在脚本怎么设置它让他等于时候默认选中 解决方案 解决方案二:<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML><HEAD><TITLE>NewDocument</TITLE><METANAME="Generato

用snmp4j如何获取节点下的所有子节点的oid

问题描述 用snmp4j如何获取节点下的所有子节点的oid,求实现方案 解决方案 解决方案二:楼主你所说的获取是oid还是oid的值?两个含义方式完全不一样.不过都要先通过解析mib文件(net.percederberg.mibble)得到oid解决方案三:不知道这是不是楼主想要的http://blog.csdn.net/thinker28754/article/details/4090048

java 用递归获取一个目录下的所有文件路径的小例子_java

复制代码 代码如下: private List<String> ergodic(File file,List<String> resultFileName){        File[] files = file.listFiles();        if(files==null)return resultFileName;// 判断目录下是不是空的        for (File f : files) {            if(f.isDirectory()){// 判

怎样判断ExtJS 异步tree的某个节点下的所有节点都已经加载了

问题描述 最近在项目中遇到一个Ext 异步树头痛的问题:树中的每个节点都有一个checkbox,当勾选父节点时,也需要将其所有的子节点都选中,但是问题是当前还没有加载这些子节点.知道可以通过对父节点加tree.on(checkedchange,function(node){node.expand(..递归.)});的形式逐个展开所有的子节点,但是怎样才能知道父节点下的所有子节点都被展开选中了呢? 因为要在这之后对该父节点和其所有子节点做一些操作. tree.on('checkedchange',

ztree获取第一个子节点的id与所有节点ID的例子

zTree.getSelectedNodes()[0]是获取选中的第一个节点 getNodeByTId 概述[ 依赖 jquery.ztree.core 核心 js ] 根据 zTree 的唯一标识 tId 快速获取节点 JSON 数据对象 通过内部的 cache 获取,不需要遍历节点. 请通过 zTree 对象执行此方法. Function 参数说明 tIdString 节点在 zTree 内的唯一标识 tId 返回值JSON tId 对应的节点 JSON 数据对象 如无结果,返回 null

dynamics crm 去除导航里的公用选项下的隐藏的节点

问题描述 新建实体时忘记去除活动那个选项页面显示时在左边的导航里的公用节点下存在活动的节点请问如何去除?在窗体属性里面不存在这个节点应该是隐藏了 解决方案 解决方案二: 解决方案三:网站方面,我还在学习中解决方案四:这个是VS中的C#效果的