C# 如何在Asp.net中使用复选框构建Treeview
我想根据输入路径显示我的所有目录。到目前为止,我实现了树视图。如何使用复选框创建Asp.net树视图 这是我的代码C# 如何在Asp.net中使用复选框构建Treeview,c#,asp.net,treeview,C#,Asp.net,Treeview,我想根据输入路径显示我的所有目录。到目前为止,我实现了树视图。如何使用复选框创建Asp.net树视图 这是我的代码 protected void ddl_SelectedIndexChanged(object sender, EventArgs e) { // ListDirectory(tvTreeView, Server.MapPath("~/")); DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/"));
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
// ListDirectory(tvTreeView, Server.MapPath("~/"));
DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/"));
TreeNode mainNode = new TreeNode();
mainNode.Text = dir.Name;
mainNode.Checked = true;
mainNode.NavigateUrl = "~/" + dir.Name;
TreeView1.Nodes.Add(mainNode);
foreach (DirectoryInfo subDir in dir.GetDirectories())
{
TreeNode parentNode = new TreeNode();
parentNode.Text = subDir.Name;
parentNode.NavigateUrl = "~/" + dir.Name + "/" + subDir.Name;
foreach (FileInfo file in subDir.GetFiles())
{
TreeNode subNode = new TreeNode();
subNode.Text = file.Name;
subNode.NavigateUrl = "~/" + dir.Name + "/" + subDir.Name + "/" + file.Name;
//Add it to the parent node
parentNode.ChildNodes.Add(subNode);
}
TreeView1.Nodes[0].ChildNodes.Add(parentNode);
}
}
在没有完全消化代码的情况下,我假设您遇到的问题(并且没有说明),是树只显示这些文件夹中的一级子文件夹和文件 这是的一个主要用例 如果这是您的问题,那么您可以使用递归解决这个问题,如下所示(注意-这是临时的-因此使用它作为基础,但要谨慎):
其思想是调用该方法,传入根directoryinfo和根treenode,然后通过深入目录infos递归地填充树。另外请注意,递归可能导致堆栈溢出,因此您应该意识到这些危险。将树视图的checkbox属性设置为true treeView1.checkbox=true
private void AddNodeForDirectory(DirectoryInfo directory, TreeNode directoryNode)
{
foreach (DirectoryInfo subDirectory in directory.GetDirectories())
{
TreeNode subDirectoryNode = new TreeNode
{
Text = subDirectory.Name,
NavigateUrl = // some path... I leave this to you
};
foreach (FileInfo file in subDirectory.GetFiles())
{
TreeNode fileNode = new TreeNode
{
Text = file.Name,
NavigateUrl = // some path... I leave this to you
};
subDirectoryNode.ChildNodes.Add(fileNode);
}
directoryNode.ChildNodes.Add(subDirectoryNode);
// Here is the recursion
this.AddNodeForDirectory(subDirectory, subDirectoryNode);
}
}