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

private void FillNodes()
{
this.tV1.Nodes.Clear();
int itn1 = tV1.Nodes.Add(new TreeNode("Главный" ));
int itn2 = tV1.Nodes[itn1].Nodes.Add(new TreeNode("Подчиненнный " + itn1.ToString () ));
int itn3 = tV1.Nodes[itn2].Nodes.Add(new TreeNode("Подчиненнный 1 " + itn2.ToString()));
int itn4 = tV1.Nodes[itn3].Nodes.Add(new TreeNode("Подчиненнный 2 " + itn3.ToString()));
}
"Подчиненнный 1 " не становится дочерним к "Подчиненнный ".
"Подчиненнный 2 " не появляется.

Примеры смотрел конструкция типа tV1.Nodes[].Nodes[].Nodes[].Nodes ... не устраивает
вопрос в многоуровневой рекурсии.
Заранее спасибо.
...
Рейтинг: 0 / 0
TreeView
    #38554978
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Draginsv,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var mainNode = new TreeNode("Главный");
int itn1 = tV1.Nodes.Add(mainNode);

var node1 = new TreeNode("Подчиненнный " + itn1.ToString());
int itn2 = mainNode.Nodes.Add(node1);

var node2 = new TreeNode("Подчиненнный 1 " + itn2.ToString());
int itn3 = node1.Nodes.Add(node2);

var node3 = new TreeNode("Подчиненнный 2 " + itn3.ToString());
node2.Nodes.Add(node3);
...
Рейтинг: 0 / 0
TreeView
    #38554981
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvik , спасибо!

попробую разобраться.
вот что надыбал
private void FillNodes()
{
this.tV1.Nodes.Clear();
TreeNode tn1 = tV1.Nodes.Add ("Главный");
TreeNode tn2 = tn1.Nodes.Add("Подчиненнный");
TreeNode tn3 = tn2.Nodes.Add("Подчиненнный 1 ");
TreeNode tn4 = tn3.Nodes.Add("Подчиненнный 2 ");
}
...
Рейтинг: 0 / 0
TreeView
    #38554982
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем склепал такую рекурсию
private void FillTree()
{
this.tV1.Nodes.Clear();
using (SqlConnection cnn = new SqlConnection(sconn))
{
try
{
string sql = "select * from T2 where IdParent is null";
cnn.Open();
SqlDataAdapter sda = new SqlDataAdapter(sql, cnn);
DataSet ds = new DataSet ();
sda.Fill(ds, "T2");
TreeNode tn;
foreach (DataRow dr in ds.Tables["T2"].Rows)
{
tn = tV1.Nodes.Add(dr["Description"].ToString());
FillTreeChild((int)dr[0], tn);
}
}
catch (SqlException ex)
{
MessageBox.Show("Ошибка! " + ex.Message);
}
}
}

private void FillTreeChild(int Id, TreeNode tn)
{
using (SqlConnection cnn = new SqlConnection(sconn))
{
try
{
string sql = "select * from T2 where IdParent = " + Id.ToString();
cnn.Open();
SqlDataAdapter sda = new SqlDataAdapter(sql, cnn);
DataSet ds = new DataSet ();
sda.Fill(ds, "T2");
TreeNode tnc;
foreach (DataRow dr in ds.Tables["T2"].Rows)
{
tnc = tn.Nodes.Add(dr["Description"].ToString());
FillTreeChild((int)dr[0], tnc);
}
}
catch (SqlException ex)
{
MessageBox.Show("Ошибка! " + ex.Message);
}
}
}

но не красиво, что в реализовано в двух методах и не по коллекции строк sda за один проход.
...
Рейтинг: 0 / 0
TreeView
    #38554993
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Draginsv, используй тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
TreeView
    #38555066
Draginsv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробую
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
private void FillNodes()
{
this.tV1.Nodes.Clear();
int itn1 = tV1.Nodes.Add(new TreeNode("Главный" ));
int itn2 = tV1.Nodes[itn1].Nodes.Add(new TreeNode("Подчиненнный " + itn1.ToString () ));
int itn3 = tV1.Nodes[itn2].Nodes.Add(new TreeNode("Подчиненнный 1 " + itn2.ToString()));
int itn4 = tV1.Nodes[itn3].Nodes.Add(new TreeNode("Подчиненнный 2 " + itn3.ToString()));
}


Понял, спасибо за замечание.
Согласен, недочет.
...
Рейтинг: 0 / 0
TreeView
    #38555368
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Draginsv,

код не правильный в приципе
вот правильный:
Код: c#
1.
2.
3.
4.
5.
var node = new TreeNode("Главный" );
tV1.Nodes.Add(node);
var node1 = new TreeNode("Подчиненнный");
node.Nodes.Add(node1);
//дальше давай сам
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / TreeView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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