C# 如何从数据库列文件路径创建树视图
我在数据库表中有一列,其中包含表中每个文件的文件路径。如何在c#中创建一个树视图,它将模拟数据库中的filepath列 以下是列中的示例文件路径列的外观:C# 如何从数据库列文件路径创建树视图,c#,treeview,C#,Treeview,我在数据库表中有一列,其中包含表中每个文件的文件路径。如何在c#中创建一个树视图,它将模拟数据库中的filepath列 以下是列中的示例文件路径列的外观: jsmith/project1/hello.cs jsmith/project1/what.cs jwilliams/project2/hello.cs 我举了一个小例子。我已经测试过了,效果很好 注意我制作了一个类MyDataBase来模拟您的数据库: public void CreateTreeView() { TreeView
jsmith/project1/hello.cs
jsmith/project1/what.cs
jwilliams/project2/hello.cs
我举了一个小例子。我已经测试过了,效果很好 注意我制作了一个类MyDataBase来模拟您的数据库:
public void CreateTreeView()
{
TreeView myTreeview = new TreeView();
myTreeview.Dock = DockStyle.Fill;
this.Controls.Add(myTreeview);
foreach (string field in MyDataBase.FieldsInMyColumn())
{
string[] elements = field.Split('/');
TreeNode parentNode = null;
for (int i = 0; i < elements.Length - 1; ++i)
{
if (parentNode == null)
{
bool exits = false;
foreach (TreeNode node in myTreeview.Nodes)
{
if (node.Text == elements[i])
{
exits = true;
parentNode = node;
}
}
if (!exits)
{
TreeNode childNode = new TreeNode(elements[i]);
myTreeview.Nodes.Add(childNode);
parentNode = childNode;
}
}
else
{
bool exits = false;
foreach (TreeNode node in parentNode.Nodes)
{
if (node.Text == elements[i])
{
exits = true;
parentNode = node;
}
}
if (!exits)
{
TreeNode childNode = new TreeNode(elements[i]);
parentNode.Nodes.Add(childNode);
parentNode = childNode;
}
}
}
if (parentNode != null)
{
parentNode.Nodes.Add(elements[elements.Length - 1]);
}
}
}
你能补充一下树状视图应该是什么样子吗?为什么要投否决票?我不认为这是一个坏问题。。。提交人没有提供树状视图的外观,因为它应该是相当明显的:)我们可以假设,正如Javier Morillo在下面的回答中所做的那样,您可以访问列中的“原始数据”作为列表:如果不能,那么“原始数据”将采用什么格式?我们可以假设“原始数据”是按照示例中的建议进行alpha排序的吗?最后,我们是否可以假设任何文件路径的“深度”都是任意深的:或者,如您的示例所示,每个文件路径的固定深度为#3?
public static class MyDataBase
{
private static List<string> fields = new List<string>();
public static void AddField(string field)
{
fields.Add(field);
}
public static IList<string> FieldsInMyColumn()
{
return fields;
}
}
public Form1()
{
InitializeComponent();
MyDataBase.AddField("jsmith/project1/hello.cs");
MyDataBase.AddField("jsmith/project1/what.cs");
MyDataBase.AddField("jsmith/project2/hello.cs");
CreateTreeView();
}