C# 用ASP.NET C中的文件填充树视图#
我有一个树视图,我正试图填充文件夹和文件。树视图正在填充文件夹,但没有填充文件。这是我的密码:C# 用ASP.NET C中的文件填充树视图#,c#,asp.net,treeview,treenode,directoryinfo,C#,Asp.net,Treeview,Treenode,Directoryinfo,我有一个树视图,我正试图填充文件夹和文件。树视图正在填充文件夹,但没有填充文件。这是我的密码: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { PopulateTree(); } } private void PopulateTr
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PopulateTree();
}
}
private void PopulateTree()
{
//Populate the tree based on the subfolders of the specified VirtualImageRoot
var rootFolder = new DirectoryInfo(VirtualImageRoot);
var root = AddNodeAndDescendents(rootFolder, null);
//Add the root to the TreeView
TreeView1.Nodes.Add(root);
}
private TreeNode AddNodeAndDescendents(DirectoryInfo folder, TreeNode parentNode)
{
//Add the TreeNode, displaying the folder's name and storing the full path to the folder as the value...
string virtualFolderPath;
if (parentNode == null)
{
virtualFolderPath = VirtualImageRoot;
}
else
{
virtualFolderPath = parentNode.Value + folder.Name + "/";
}
var node = new TreeNode(folder.Name, virtualFolderPath);
//Recurse through this folder's subfolders
var subFolders = folder.GetDirectories();
foreach (DirectoryInfo subFolder in subFolders)
{
var child = AddNodeAndDescendents(subFolder, node);
foreach (FileInfo file in subFolder.GetFiles())
{
var index = file.FullName.LastIndexOf(@"\", StringComparison.Ordinal);
var strname = file.FullName.Substring(index + 1);
var name = strname.Split('.');
var tn = new TreeNode();
if (name.Length > 1 && name[1].ToLower() == "bch")
{
tn = new TreeNode(name[0], file.FullName);
}
else
{
tn = new TreeNode(name[0], file.FullName);
}
child.ChildNodes.Add(tn);
}
node.ChildNodes.Add(child);
}
//Return the new TreeNode
return node;
}
下面是我的树的样子:
以下是文件夹中文件的图片:
我正在尝试显示.bch类型的文件,以及我的树视图中的文件夹。有人能告诉我我做错了什么吗?问题是您的代码没有考虑文件夹层次结构的第一级:
private void PopulateTree()
{
var rootFolder = new DirectoryInfo(@"C:\inetpub\wwwroot\yourwebproject");
var root = AddNodeAndDescendents(rootFolder);
TreeView1.Nodes.Add(root);
}
private TreeNode AddNodeAndDescendents(DirectoryInfo folder)
{
var node = new TreeNode(folder.Name, folder.Name);
var subFolders = folder.GetDirectories();
foreach (DirectoryInfo subFolder in subFolders)
{
var child = AddNodeAndDescendents(subFolder);
node.ChildNodes.Add(child);
}
foreach (FileInfo file in folder.GetFiles("*.bch"))
{
var tn = new TreeNode(file.Name, file.FullName);
node.ChildNodes.Add(tn);
}
return node;
}
你的子串伤了我的大脑。你知道FileInfo有一个扩展属性吗?@bickets不,我不知道。尽管如此,我还是会选择在DirectoryInfo上使用GetFiles重载,它允许您预先指定搜索模式。@饼干,您能给我一个代码示例吗?foreach(子文件夹.GetFiles(*.bch)中的FileInfo文件)我刚刚试过您的代码,我仍然只获取文件夹,没有文件。我遗漏了什么吗?那么我想问题是分机不是真的。bch。尝试以下操作:不,它实际上是文件扩展名。我将为您发布文件的图片。当您在“var tn=…”行上放置断点时会发生什么?它被击中了吗?那些文件不是被标记为隐藏的吗?(但是GetFiles()甚至应该返回隐藏的文件)