treeview如果根节点下无子节点就不显示此根节点----后台代码该如何写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了treeview如果根节点下无子节点就不显示此根节点----后台代码该如何写相关的知识,希望对你有一定的参考价值。

一下是我的后台代码:
//树菜单绑定根类和子类
public void TreeView()

DataTable dt = new BigCategory().SelectBigType(); //搜索所有根类名称和ID

foreach (DataRow dr in dt.Rows)

TreeNode tn = new TreeNode();
tn.Value = dr["bid"].ToString();
tn.Text = dr["btype"].ToString();
TreeView1.Nodes.Add(tn);
tn.SelectAction = TreeNodeSelectAction.Expand;

string bigid = dr["bid"].ToString();
DataTable dt1 = new CategoryDAO().SelectTypeByBid(bigid);//搜索所有子类ID和名称
if (dt1.Rows.Count > 0)

foreach (DataRow dr1 in dt1.Rows)

TreeNode tnChild = new TreeNode();
tnChild.Value = dr1["cid"].ToString();//节点的Value值,一般为数据库的id值
tnChild.Text = dr1["type"].ToString();//节点的Text,节点的文本显示
tn.ChildNodes.Add(tnChild);





有图片

参考技术A int i, j = TreeView1.Nodes.Count, a=0;
ArrayList Node = new ArrayList();
for (i = 0; i < TreeView1.Nodes.Count; i++)

if (TreeView1.Nodes[i].ChildNodes.Count == 0)

Node.Add(i);//把无子节点的根节点序号存入数组


for (int s = 0; s < Node.Count; s++)

int k = Convert.ToInt32(Node[s]);
if (s == 0)

TreeView1.Nodes.Remove(TreeView1.Nodes[k]);

else

a++;//删除一个节点后,相应的节点序号会变化,每次-1
TreeView1.Nodes.Remove(TreeView1.Nodes[k-a]);

追问

非常感谢耐心解答,很有技术性,不过我还是想要比较简单的解决方式。

参考技术B TreeView1.Nodes.Add(tn);这句放在if (dt1.Rows.Count > 0)
这里面就可以了啊。。。。。本回答被提问者采纳

C#动态给treeview控件添加节点和子节点

在程序运行的时候,点击一个按钮添加,主要是子节点怎么添加

如图,添加根节点可以添加,可是子节点去不知道怎么添加
我在添加子节点的时候,用鼠标单击了一个节点,我怎样才能知道是那个节点呢?怎么让程序知道该在那个里添加呢?

很简单,你的问题已经隐藏在你的疑惑的地方了
treeview 鼠标点击一个节点,那么这个节点是处于选中状态的,它会有明显的蓝色背景,而且只有一个处于选中状态
treeview.SelectNode 就是选中的节点
此为方法一
方法二:设置treeview 有一个属性,是否显示复选框,好像叫做ShowCheckBox 设置为true,你每次勾选节点前面的复选框,然后怎么判断是否选中呢?
循环所有根节点 foreach node in root.childnode
if(node.Checked)
//这个node就是你需要在下面添加子节点的节点

分清楚selected 和checked 就可以帮你解决你疑惑的地方
参考技术A TreeNode RootNode=new TreeNode();
this.treeView1.Nodes.Add(RootNode);
就这样加根节点,子节点也是同样方法。

语句: ParentNode.ChildNodes.Add(ChildNode);

其中:
ParentNode:父结点
ChildNodes:VS默认的父节点属性,用于获取父结点的第一级子节点
Add: VS默认的结点添加方法
ChildNode: 所要插入的子节点追问

我在添加子节点的时候,用鼠标单击了一个节点,我怎样才能知道是那个节点呢?

追答

其他网友已经给了你答案,我想你应该明白了O(∩_∩)O~

本回答被提问者采纳
参考技术B 用递归去实现就可以了 参考技术C 应该是控件new一个add添加

以上是关于treeview如果根节点下无子节点就不显示此根节点----后台代码该如何写的主要内容,如果未能解决你的问题,请参考以下文章

treeview - 第一个节点出现/显示在根目录下

WINFORM中treeView怎么让它只显示父节点的checkbox,不显示子节点的。急急,如能解决分大大给

动态载入TreeView时让TreeView节点前显示加号

未显示根线时,TreeView 将 +- 号添加到根节点[重复]

winform中,TreeView如何只展开一级节点

epoint:TreeView