[英]C# add child to Parents treeView
my database 我的数据库
CREATE TABLE [dbo].[tb1] (
[name] NVARCHAR (MAX) NOT NULL,
[code] INT NOT NULL,
[sub] BIT NOT NULL,
[level] INT NOT NULL,
[Sub_Lang] NVARCHAR (MAX) NOT NULL,
PRIMARY KEY CLUSTERED ([code] ASC)
);
my data to database 我的数据到数据库
name | code | sub | level | Sub_Lang
.net | 100 | false | 0 | 0
C# | 101 | true | 1 | 100
VB | 102 | true | 1 | 100
asp | 103 | true | 2 | 100_101
asp | 105 | true | 2 | 100_102
mvc | 104 | true | 3 | 100_101_103
php | 106 | false | 0 | 0
I can read from the database 我可以从数据库中读取
DataTable dt1
for (int i = 0; i < dt1.Rows.Count; i++)
{
treeView1.Nodes.Add(dt1.Rows[i].Field<int>("code").ToString(),
dt1.Rows[i].Field<string>("name").ToString());
treeView1.Nodes[i].Tag = dt1.Rows[i].Field<int>("code").ToString();
}
But I can not show the treeView In this case 但是在这种情况下我无法显示treeView
.net
c#
asp
mvc
VB
asp
php
how I show in treeView 我如何在treeView中显示
I'm sorry OK Edit 对不起,确定
May be not best solution, but still give it a try. 可能不是最好的解决方案,但请尝试一下。
I have used Sub_Lang
column of datatable to build hierarchy of TreeView. 我已经使用数据表的
Sub_Lang
列来构建TreeView的层次结构。 Used Dictionary
to store tree nodes. 使用
Dictionary
来存储树节点。 Code
column is used as key. Code
列用作键。
private void LoadTreeView(DataTable dt)
{
var dNodes = new Dictionary<string, TreeNode>();
foreach (DataRow dRow in dt.Rows)
{
string sSublang = dRow["Sub_lang"].ToString();
string sCode = dRow["code"].ToString();
string sName = dRow["name"].ToString();
if (sSublang == "0")
{
var tn = treeView1.Nodes.Add(sCode, sName);
dNodes.Add(sCode, tn);
}
else
{
string[] arrSubLang = sSublang.Split('_');
for (int i = arrSubLang.Length - 1; i >= 0; i--)
{
string sFindCode = arrSubLang[i];
var tnLastParent = default(TreeNode);
if (dNodes.ContainsKey(sFindCode))
{
var tn = dNodes[sFindCode];
if (tnLastParent != default(TreeNode))
{
tn.Nodes.Add(tnLastParent);
tnLastParent = tn;
}
else if (!dNodes.ContainsKey(sCode))
{
tnLastParent = tn.Nodes.Add(sCode, sName);
dNodes.Add(sCode, tnLastParent);
}
}
}
}
}
treeView1.ExpandAll();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.