Search code examples
c#treeview

Can't show all nodes of TreeView


I have the following Code down here, but when I try to add a child to parent it causes an error when parentID is bigger than 4.

public void LoadNodes()
{
    ConnectionShorten("TreeViewTable");
    int H = MyNodes.Tables["TreeViewTable"].Rows.Count;
    for (int i = 0; i < H; i++)
    {
        int PID = MyNodes.Tables["TreeViewTable"].Rows[i].Field<int>("ParentID");
        string Name = MyNodes.Tables["TreeViewTable"].Rows[i].Field<string>("RootName");
        int Level = MyNodes.Tables["TreeViewTable"].Rows[i].Field<int>("Level");
        int UID = MyNodes.Tables["TreeViewTable"].Rows[i].Field<int>("UID");

        switch (Level)
        {
            case 0:
                treeView1.Nodes.Add(Name.ToString());
                break;
            case 1:
                treeView1.Nodes[0].Nodes.Add(Name.ToString());
                break;
            case 2:
                switch (PID)
                {
                    case 1:
                        treeView1.Nodes[0].Nodes[0].Nodes.Add(Name.ToString());
                        break;
                    case 2:
                        treeView1.Nodes[0].Nodes[1].Nodes.Add(Name.ToString());
                        break;
                    case 3:
                        treeView1.Nodes[0].Nodes[2].Nodes.Add(Name.ToString());
                        break;
                    case 4:
                        treeView1.Nodes[0].Nodes[3].Nodes.Add(Name.ToString());
                        break;
                    case 5:
                        treeView1.Nodes[0].Nodes[4].Nodes.Add(Name.ToString());
                        break;
                    case 6:
                        treeView1.Nodes[0].Nodes[5].Nodes.Add(Name.ToString());
                        break;
                    case 7:
                        treeView1.Nodes[0].Nodes[6].Nodes.Add(Name.ToString());
                        break;
                    case 8:
                        treeView1.Nodes[0].Nodes[7].Nodes.Add(Name.ToString());
                        break;
                    case 9:
                        treeView1.Nodes[0].Nodes[8].Nodes.Add(Name.ToString());
                        break;
                    case 10:
                        treeView1.Nodes[0].Nodes[9].Nodes.Add(Name.ToString());
                        break;
                    case 11:
                        treeView1.Nodes[0].Nodes[10].Nodes.Add(Name.ToString());
                        break;
                    default:
                        break;
                }
                break;
            case 3:
                break;
            default:
                break;
        }

    }
}

It does load 1 main node and 10 parents, then when it comes to child it says a negative index, but I'm sure the parent does exist!

Also how can I make more levels with no difficulty like this, because I think it's very difficult to make levels > 3.


Solution

  • You can close it, I just found that problem and solved it. It was because there is a jump on ID on the DB. So I try to add child before I even add the parent. my program is read by ID so thats it ... sorry for this.