Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Построение дерева / 3 сообщений из 3, страница 1 из 1
01.04.2004, 17:28
    #32465981
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
Задачка следующая:

Есть иерархическая таблица (поля: nID и nParentID) в MS SQL Server.
Подскажите пожалуйста (желательно примерчик), как средствами ADO.NET, построить TreeView, основанное на данных вышеуказанной таблицы? Я могу построить такое дерево, если количество уровней статично. А как построить это дерево с динамическим кол-ом уровней?
И ещё вопросик: можно ли, при выборе определённого узла построенного дерева, узнать к какому уровню этот узел относится?

Заранее благодарен за полезную информацию.
...
Рейтинг: 0 / 0
01.04.2004, 18:22
    #32466075
Dronopotamus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
вот часть кода, отвечающая за построение дерева, в некоем DBTree : TreeView :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
#region Построение дерева
private System.Collections.Hashtable tbl = new Hashtable();

private void DeleteNodes()
{
	if (tbl.Count ==  0 ) return;
	DBTreeGroup node;
	IDictionaryEnumerator en = tbl.GetEnumerator();
	while (en.MoveNext())
	{
		if (en.Current is DBTreeGroup)
		{
			node = en.Current as DBTreeGroup;
			Nodes.Remove(node);
		}
	}
}

private void BuildTree()
{
	if (cm == null) return;
	//удалим только те ноды, которые мы добавили
	DeleteNodes();
	tbl.Clear();
	IList list = cm.List; //это наша таблица
	for (int i= 0 ; i< list.Count; i++)
	{
		object val_prnt = GetParent(i); //это значение в поле ParentID
		object val_id = GetValue(i); //это значение в поле Value
		object val_txt = GetDisplay(i); //это значение в поле Display
		
		DBTreeGroup child = new DBTreeGroup(val_txt.ToString().Trim(), i);

		if (tbl.ContainsKey(val_prnt))
		{
			DBTreeGroup parent = (DBTreeGroup)tbl[val_prnt];
			parent.Nodes.Add(child);
		}
		else
			Nodes.Add(child);
		tbl.Add(val_id, child);
	}
	if (Nodes.Count >  0 ) this.SelectedNode = Nodes[ 0 ];
}

#endregion
...
Рейтинг: 0 / 0
02.04.2004, 11:56
    #32466844
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение дерева
Большое спасибо за информацию.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Построение дерева / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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