C# 在treeview asp.net中隐藏根节点
在这种情况下,如何隐藏根节点“temp”文件夹? 我想在根节点上设置CssClass来完成此操作C# 在treeview asp.net中隐藏根节点,c#,asp.net,treeview,nodes,C#,Asp.net,Treeview,Nodes,在这种情况下,如何隐藏根节点“temp”文件夹? 我想在根节点上设置CssClass来完成此操作 TreeView TreeView1 = new TreeView(); protected void Page_Load(object sender, EventArgs e) { BuildTree(@"C:\temp"); form1.Controls.Add(TreeView1); } private void BuildTre
TreeView TreeView1 = new TreeView();
protected void Page_Load(object sender, EventArgs e)
{
BuildTree(@"C:\temp");
form1.Controls.Add(TreeView1);
}
private void BuildTree(string root)
{
DirectoryInfo rootDir = new DirectoryInfo(root);
TreeNode rootNode = new TreeNode(rootDir.Name, rootDir.FullName);
TreeView1.Nodes.Add(rootNode);
TraverseTree(rootDir, rootNode);
}
private void TraverseTree(DirectoryInfo currentDir, TreeNode currentNode)
{
foreach (DirectoryInfo dir in currentDir.GetDirectories())
{
TreeNode node = new TreeNode(dir.Name, dir.FullName);
currentNode.ChildNodes.Add(node);
TraverseTree(dir, node);
}
foreach (FileInfo file in currentDir.GetFiles())
{
TreeNode nodeFile = new TreeNode(file.Name, file.FullName);
currentNode.ChildNodes.Add(nodeFile);
}
}
代码已完成,只需更改桌面路径即可运行。为什么不首先添加根节点,而是将所有直接子体设置为级别1节点:
TreeView TreeView1 = new TreeView();
protected void Page_Load(object sender, EventArgs e)
{
BuildTree(@"C:\temp");
form1.Controls.Add(TreeView1);
}
private void BuildTree(string root)
{
DirectoryInfo rootDir = new DirectoryInfo(root);
TreeNode rootNode = new TreeNode(rootDir.Name, rootDir.FullName);
TraverseTree(rootDir, TreeView1.Nodes);
}
private void TraverseTree(DirectoryInfo currentDir, TreeNodeCollection nodeCollection)
{
foreach (DirectoryInfo dir in currentDir.GetDirectories())
{
TreeNode node = new TreeNode(dir.Name, dir.FullName);
nodeCollection.Add(node);
TraverseTree(dir, node.ChildNodes);
}
foreach (FileInfo file in currentDir.GetFiles())
{
TreeNode nodeFile = new TreeNode(file.Name, file.FullName);
nodeCollection.Add(nodeFile);
}
}
编辑:我已经修改了上面的代码,删除了我编写的
AddToNode
方法。前面的方法检查传入的currentNode对象是否为null,如果为null,则将其添加到TreeView的NodeCollection(否则添加到currentNode的ChildNodes集合)。相反,我不是在传递节点,而是在传递节点的NodeCollection—这意味着我们可以简化逻辑。)很高兴它对您有效。我很快就把它组合起来了,所以我认为可以简化代码,我将编辑答案以反映简化。