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

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
09.02.2014, 16:00
    #38554978
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView
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
09.02.2014, 16:07
    #38554981
Draginsv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView
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
09.02.2014, 16:12
    #38554982
Draginsv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView
В общем склепал такую рекурсию
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
09.02.2014, 16:52
    #38554993
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView
Draginsv, используй тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
09.02.2014, 19:56
    #38555066
Draginsv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView
Пробую
Код: 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
10.02.2014, 11:00
    #38555368
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView
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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / TreeView / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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