Не могу показать все узлы TreeView - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть следующий код здесь, но когда я пытаюсь добавить дочерний элемент к родительскому, он вызывает ошибку, когда parentID больше 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;
        }

    }
}

Он загружает 1 основной узел и 10 родителей, потом, когда речь идет о ребенке, это говорит об отрицательном показателе, но я уверен, что родитель существует!

Кроме того, как я могу сделать больше уровней без затруднений, как это, потому что я думаю, что это очень сложно сделать уровни> 3.

1 Ответ

0 голосов
/ 28 апреля 2020

Вы можете закрыть его, я только что нашел эту проблему и решил ее. Это произошло потому, что на БД произошел скачок ID. Поэтому я пытаюсь добавить ребенка еще до того, как добавлю родителя. моя программа читается по ID, вот и все ... извините за это.

...