Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2012, 11:17   #1
avtor-ht
 
Регистрация: 30.05.2012
Сообщений: 3
По умолчанию Заполнить treeView

Добрый день. Подскажите пожалуйста как правильно реализовать цикл заполнения дерева.
Читаю данные
Код:
            TextSQL = "select ID, NAIM, PRIZNAK, ID_PARENT from NOMENKLATURA";
            SQLiteDataReader dannie = SelectQuery(TextSQL);
            bool data_est = false;
            while (dannie.Read())
            {
                id_nomenkl.Add(dannie.GetInt32(0));
                id_parent.Add(dannie.GetInt32(3));
                naim.Add(dannie.GetString(1));
                priznaks.Add(dannie.GetString(2));
                data_est = true;
            }
а дальше сломал голову.. мой код не работает, как видно из запроса каждая номенклатура имеет ID родителя. Надо по этим данным построить дерево. Мой код уходит за пределы массива.
Код:
            treeView1.Nodes.Clear();
            for (int i = 0; i < id_nomenkl.Count; i++)
            {
                if (id_parent[i] == 0) {
                    treeView1.Nodes.Add(Convert.ToString(id_nomenkl[i]), naim[i]);
                }
                for (int j = 0; j < id_nomenkl.Count; j++)
                {
                    if (id_parent[j] != id_nomenkl[i])
                    {
                        continue;
                    }
                    else 
                    {
                        treeView1.Nodes[i].Nodes.Add(Convert.ToString(id_nomenkl[j]), naim[j]);
                    }                
                }
            }
avtor-ht вне форума Ответить с цитированием
Старый 27.09.2012, 13:09   #2
avtor-ht
 
Регистрация: 30.05.2012
Сообщений: 3
По умолчанию

Запустил вот так. Работает. Если есть варианты красивее отпишите.
Код:
            treeView1.Nodes.Clear();

            for (int i = 0; i < id_nomenkl.Count; i++)
            {
                if (id_parent[i] == 0)
                {
                    treeView1.Nodes.Add(Convert.ToString(id_nomenkl[i]), naim[i]);
                    continue;
                }
                TreeNode[] tn = treeView1.Nodes.Find(Convert.ToString(id_parent[i]), true);
                for (int j = 0; j < tn.Length; j++) {
                    treeView1.SelectedNode = tn[j];
                    treeView1.SelectedNode.Nodes.Add(Convert.ToString(id_nomenkl[i]), naim[i]);
                }

            }
avtor-ht вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнить матрицу dizzy69 Visual C++ 2 23.12.2011 23:00
Заполнить матрицу Artoo Помощь студентам 2 04.12.2011 12:08
Заполнить массив Файзулка Помощь студентам 2 24.01.2011 23:50
Заполнить массив mila111189 Помощь студентам 1 04.11.2010 00:09
Заполнить TTreeView Leonis Компоненты Delphi 6 27.03.2008 13:02