110,538
社区成员
发帖
与我相关
我的任务
分享
DataTable dt = null;
// 这里添加从数据库加载数据的代码
Dictionary<string, TreeNode> nodesDict = new Dictionary<string, TreeNode>();
foreach (DataRow row in dt.Rows) {
// 遍历并创建树节点
string col1 = row["col1"] as string;
string col2 = row["col2"] as string;
if(!nodesDict.ContainsKey(col1)) {
nodesDict[col1] = new TreeNode(col1);
}
if(!nodesDict.ContainsKey(col2)) {
nodesDict[col2] = new TreeNode(col2);
}
// 设置节点间父子关系
nodesDict[col1].Nodes.Add(nodesDict[col2]);
}
foreach (KeyValuePair<string, TreeNode> pair in nodesDict) {
if(pair.Value.Parent == null) {
treeView1.Nodes.Add(pair.Value);
}
}
private void Form1_Load(object sender, EventArgs e)
{
DataTable _Table = new DataTable();
_Table.Columns.Add("Name1");
_Table.Columns.Add("Name2");
_Table.Rows.Add(new string[] { "AAA", "BBB" });
_Table.Rows.Add(new string[] { "AAA", "CCC" });
_Table.Rows.Add(new string[] { "AAA", "DDD" });
_Table.Rows.Add(new string[] { "BBB", "EEE" });
_Table.Rows.Add(new string[] { "BBB", "FFF" });
_Table.Rows.Add(new string[] { "CCC", "GGG" });
_Table.Rows.Add(new string[] { "CCC", "HHH" });
_Table.Rows.Add(new string[] { "EEE", "III" });
treeView1.Nodes.Add("AAA");
AddTreeNode(treeView1.Nodes[0], _Table,"AAA");
}
private void AddTreeNode(TreeNode p_SubNode,DataTable p_Table,string p_ParentText)
{
DataRow[] _RowList=p_Table.Select("Name1='" + p_ParentText + "'");
for (int i = 0; i != _RowList.Length; i++)
{
string _Text = _RowList[i]["Name2"].ToString();
TreeNode _TreeSubNode = new TreeNode(_Text);
p_SubNode.Nodes.Add(_TreeSubNode);
AddTreeNode(_TreeSubNode, p_Table, _Text);
}
}
页面中一个TreeView控件“TreeView1” 一个TextBox“TextBox1” 一个按钮“Button1”
在TextBox1中写入路径 点击Button1 执行:
protected void Button1_Click(object sender, EventArgs e)
{
this.TreeView1.Nodes.Clear();
string path = this.TextBox1.Text.Trim();
TreeNode tn = new TreeNode();
tn=FillTreeView(path, tn);
this.TreeView1.Nodes.Add(tn);
}
private TreeNode FillTreeView(string path,TreeNode tn)
{
if (path.Substring(path.Length - 1).CompareTo("\\") != 0)
{
path += "\\";
}
int length = path.Length;
int p = (path.Substring(0, length - 1)).LastIndexOf("\\");
string fileName = path.Substring(0,length-1).Substring(p+1);
DirectoryInfo di = new DirectoryInfo(path);
tn.Text = di.Name;
try
{
foreach (FileSystemInfo var in di.GetFileSystemInfos())
{
TreeNode tn1 = new TreeNode();
if (var is DirectoryInfo)
{
tn1 = FillTreeView(var.FullName, tn1); //递归
}
else
{
tn1.Text = var.Name;
}
tn.ChildNodes.Add(tn1);
}
}
catch { }
return tn;
}