objectListView树视图节点未创建多级

时间:2015-06-26 08:16:54

标签: c# .net winforms objectlistview

我正在尝试使用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小时尝试这个但是没有得到正确的树视图结构。非常感谢你的帮助。

0 个答案:

没有答案