我正在尝试使用ObjectListview创建多级树视图。但问题是它只创建一个父项并在该父项中添加子项。 我的树以任何形式狭窄
A
-a1
-a2
-a3
-a4
- a4(i)
B
- b (a)
- c (a)
C
意味着我的树可以是多层次的。下面是我用来绑定treeListView
的代码private void InitializeData(int appId)
{
try
{
UserDAC _UserDAC = new UserDAC();
DataTable SEC_InfoTreeView = _UserDAC.GetAPPITEMSbyAPPID(appId, "", this.FindForm().Name, "InitializeFristTabValue()").Tables[0];
data = new List<Node> { }; // this i bind my treelistview
var Blank = new Node(0, "User Name", "Status", "Static Caption");
var parent1= new Node(0,"", "", " ");
treeListView1.SmallImageList = imageList1;
if (SEC_InfoTreeView.Rows.Count > 0)
{
for (int i = 0; i < SEC_InfoTreeView.Rows.Count; i++)
{
if (i == 0)
data.Add(Blank);
int PrentID = Convert.ToInt32(SEC_InfoTreeView.Rows[i]["PARENTID"]);
if (Convert.ToString(SEC_InfoTreeView.Rows[i]["INDENT"]) != "")
{
if (PrentID == 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 0)
{
data.Add(parent1);
var parentAdd = new Node(Convert.ToInt32(SEC_InfoTreeView.Rows[i]["APPITEMID"]), Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]), "", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"]));
parent1 = parentAdd;
}
else if (PrentID != 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 2)
{
parent1.Children.Add(new Node(Convert.ToInt32(SEC_InfoTreeView.Rows[i]["APPITEMID"]),Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]), "", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"])));
}
else if (PrentID != 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 4)
{
parent1.Children.Add(new Node(Convert.ToInt32(SEC_InfoTreeView.Rows[i]["APPITEMID"]),Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]), "", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"])));
}
else if (PrentID != 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 6)
{
parent1.Children.Add(new Node(Convert.ToInt32(SEC_InfoTreeView.Rows[i]["APPITEMID"]),Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]),"", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"])));
}
else if (PrentID != 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 10)
{
parent1.Children.Add(new Node(Convert.ToInt32(SEC_InfoTreeView.Rows[i]["APPITEMID"]),Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]), "", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"])));
}
else if (PrentID != 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 8)
{
parent1.Children.Add(new Node(Convert.ToInt32(SEC_InfoTreeView.Rows[i]["APPITEMID"]),Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]),"", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"])));
}
else if (PrentID != 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 12)
{
parent1.Children.Add(new Node(Convert.ToInt32(SEC_InfoTreeView.Rows[i]["APPITEMID"]),Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]), "", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"])));
}
else if (PrentID != 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 14)
{
parent1.Children.Add(new Node(Convert.ToInt32(SEC_InfoTreeView.Rows[i]["APPITEMID"]),Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]), "", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"])));
}
else if (PrentID != 0 && Convert.ToInt32(SEC_InfoTreeView.Rows[i]["INDENT"]) == 16)
{
parent1.Children.Add(new Node(Convert.ToInt32(SEC_InfoTreeView.Rows[i]["APPITEMID"]),Convert.ToString(SEC_InfoTreeView.Rows[i]["USERNAME"]), "", Convert.ToString(SEC_InfoTreeView.Rows[i]["ACAPTION"])));
}
}
}
}
}
catch (Exception ex)
{
}
}
class Node
{
public int Id { get; private set; }
public string Name { get; private set; }
public string Column1 { get; private set; }
public string Column2 { get; private set; }
public List<Node> Children { get; private set; }
public Node(int id, string name, string col1, string col2)
{
this.Id = id;
this.Name = name;
this.Column1 = col1;
this.Column2 = col2;
this.Children = new List<Node>();
}
}
对于绑定树视图我使用此代码this.treeListView1.Roots = data;
几乎我从最近21小时尝试这个但是没有得到正确的树视图结构。非常感谢你的帮助。