Как создать 3-х узловое дерево в winforms с mysql? - PullRequest
0 голосов
/ 01 июня 2011

Database

Я реализую базу данных, поэтому я закодировал как ...

   string MyConString = ConfigurationManager.ConnectionStrings["College_Management_System.Properties.Settings.cmsConnectionString"].ConnectionString;
            MySqlConnection connection = new MySqlConnection(MyConString);
            MySqlCommand command = connection.CreateCommand();
            MySqlDataReader Reader;
            command.CommandText = "select * from menu_right";
            connection.Open();
            Reader = command.ExecuteReader();
            while (Reader.Read())
            {
                if (Reader[2].ToString() == Convert.ToString(0))
                {
                    treeView1.Nodes.Add(Reader[3].ToString(), Reader[1].ToString());
                }

                if (Reader[2].ToString() == Convert.ToString(1))
                {
                    treeView1.Nodes[0].Nodes.Add(Reader[3].ToString(), Reader[1].ToString());
                }

                if (Reader[2].ToString() == Convert.ToString(4))
                {
                    treeView1.Nodes[1].Nodes.Add(Reader[3].ToString(), Reader[1].ToString());
                }

                if (Reader[2].ToString() == Convert.ToString(18))
                {
                    treeView1.Nodes[1].Nodes[0].Nodes.Add(Reader[3].ToString(), Reader[1].ToString());
                }
            }
            connection.Close();

но выдает ошибку,

Указанный аргумент вышел из диапазон допустимых значений. Имя параметра: Индекс

в

treeView1.Nodes[1].Nodes[0].Nodes.Add(Reader[3].ToString(), Reader[1].ToString());

в чем проблема в моем коде.?.

Есть ли другой способ упростить код для моего требования?

1 Ответ

2 голосов
/ 01 июня 2011

Ваша ошибка происходит из-за того, что записи с parent_id == 18 читаются до записи с parent_id == 4. Ваш treeView1.Nodes[1].Node[0] еще не был добавлен во время его вызова.

Вы могли бы избежать этой ситуации с помощью что-то вроде 'order by parent_id', чтобы гарантировать, что записи будут возвращаться в том порядке, в котором вы ожидаете их, однако этот код все равно будет трудно поддерживать, так как его уже трудно прочитать /understand.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...