powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Рекурсивное построение TreeView из таблицы MSSql
10 сообщений из 10, страница 1 из 1
Рекурсивное построение TreeView из таблицы MSSql
    #38670797
DracoDier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С# только изучаю, не судите строго.
Необходимо построить TreeView базируясь на данных таблицы MSSql.
Содержимое таблицы :

idSerials NameOriginal NomerSezon NomerSerii
1 Сериал 1 Сезон 1 1х1
2 Сериал 1 Сезон 1 1х2
3 Сериал 1 Сезон 2 2х1
4 Сериал 1 Сезон 2 2х2
5 Сериал 2 NULL 1х1
6 Сериал 2 NULL 1х2
7 Сериал 3 NULL NULL



Должно быть :

Сериал 1
Сезон 1
1х1
1х2
Сезон 2
2х1
2х2
Сериал 2
1х1
1х2
Сериал 3



Мой код :

private void BuildingTreeView1()
{
SqlDataAdapter da = new SqlDataAdapter(@"Select NameOriginal, NomerSezona, NomerSerii from Serials", con);
DataSet ds = new DataSet();
da.Fill(ds, "Serials");

foreach (DataRow dr in ds.Tables["Serials"].Rows)
{
TreeNode tn = new TreeNode(dr["NameOriginal"].ToString());


foreach (DataRow dr2 in ds.Tables["Serials"].Rows)
{
TreeNode ctn = new TreeNode(dr2["NomerSezona"].ToString());
foreach (DataRow dr3 in ds.Tables["Serials"].Rows)
{
TreeNode gctn = new TreeNode(dr3["NomerSerii"].ToString());
ctn.Nodes.Add(gctn);
}
tn.Nodes.Add(ctn);
}
treeView1.Nodes.Add(tn);
}



Код отрабатывает, выстраивает трехступенчатый TreeView, но при этом в child и grandchild попадает parent.... Проще говоря "каша"...

Подскажите, где накосячил?
Заранее спасибо.
...
Рейтинг: 0 / 0
Рекурсивное построение TreeView из таблицы MSSql
    #38670837
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DracoDier,

Инструкция и пример в файле
...
Рейтинг: 0 / 0
Рекурсивное построение TreeView из таблицы MSSql
    #38671288
DracoDier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Попробую разобраться.

А так невидно, где у меня то в коде косяк?
...
Рейтинг: 0 / 0
Рекурсивное построение TreeView из таблицы MSSql
    #38671462
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DracoDierА так невидно, где у меня то в коде косяк?
видно, косяк в том, что у тебя всё в одной кучи и юай и бл и дал
...
Рейтинг: 0 / 0
Рекурсивное построение TreeView из таблицы MSSql
    #38671526
DracoDier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так если видно - помогите. Об этом и прошу вроде бы...
...
Рейтинг: 0 / 0
Рекурсивное построение TreeView из таблицы MSSql
    #38671534
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DracoDierТак если видно - помогите. Об этом и прошу вроде бы...
так я уже написал, исправь и всё у тебя будет
...
Рейтинг: 0 / 0
Рекурсивное построение TreeView из таблицы MSSql
    #38671575
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DracoDier,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
private void BuildingTreeView1()
{
SqlDataAdapter da = new SqlDataAdapter(@"Select NameOriginal, NomerSezona, NomerSerii from Serials", con);
DataSet ds = new DataSet();
da.Fill(ds, "Serials");

foreach (DataRow dr in ds.Tables["Serials"].Rows)
{
TreeNode tn = new TreeNode(dr["NameOriginal"].ToString());


foreach (DataRow dr2 in ds.Tables["Serials"].Rows)
{
TreeNode ctn = new TreeNode(dr2["NomerSezona"].ToString());
foreach (DataRow dr3 in ds.Tables["Serials"].Rows)
{
TreeNode gctn = new TreeNode(dr3["NomerSerii"].ToString());
ctn.Nodes.Add(gctn);
}
tn.Nodes.Add(ctn);
}
treeView1.Nodes.Add(tn);
}


замечательный код, но каждая строчка имеет смысловое определение, может не стоить лепить все в одну кучу
а задуматься как строится дерево, ( думать не запрещается?)
можно пройтись по делая выборку
таким способом: написал чисто интуитивно
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 foreach (var source in ds.Tables["Serials"].Rows.OfType<DataRow>().Select(a => a["NameOriginal"]).Distinct()) 
            {
                var source1 = source;
                foreach (var s in ds.Tables["Serials"].Rows.OfType<DataRow>().Where(a=>source1!=null&&(string) a["NameOriginal"]==source1.ToString()).Select(c=>c["Serials"]).Distinct())
                {
                    
                }
            }


можно выбрать каждую корневую ноду как сложный объект и потом строить дерево.
единственное что рвет шаблон это:
автор5 Сериал 2 NULL 1х1
6 Сериал 2 NULL 1х2
...
Рейтинг: 0 / 0
Рекурсивное построение TreeView из таблицы MSSql
    #38671583
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DracoDierСпасибо. Попробую разобраться.

А так невидно, где у меня то в коде косяк?
...
Рейтинг: 0 / 0
Рекурсивное построение TreeView из таблицы MSSql
    #38671584
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DracoDierСпасибо. Попробую разобраться.

А так невидно, где у меня то в коде косяк?

Судя по коду ты заполняешь только Parent Nodes дочерние ноды ты не заполняешь то есть ты все "пихаешь" в кучу.

PS: лучше посмотри файл я думаю так будет проще
...
Рейтинг: 0 / 0
Рекурсивное построение TreeView из таблицы MSSql
    #38672945
DracoDier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем. Разобрался. Дерево заполняется теперь правильно.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Рекурсивное построение TreeView из таблицы MSSql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]