Да предположим, че има маса на отдели на университета (tblDepartment) в следния формат:
intID - strDepartmentName - intParentID
където,
intID - идентификатор единица
strDepartmentName - име единица,
intParentID - ID на родителското устройство.
корен елемент ще бъде наричан "майка" на себе си.
Също така за удобство, конструкторът на таблицата родител в областта, можете да укажете заместване, като се позовава на същата таблица:
искането за смяна на текста:
SELECT tblDepartment. strDepartmentName като Р на drazde L IX,
tblDepartment_1. strDepartmentName AS Dite П о л и,
ОТ tblDepartment LEFTJOIN tblDepartment AS tblDepartment_1
ON tblDepartment. intParentID = tblDepartment_1. intID
ORDERBY tblDepartment. strDepartmentName;
След това колоната родител, ние може да избере да не идентификатор, като от името на дъщерни компании (но ID все още ще бъде съхранявана в колоната).
В резултат на това, ние ще бъдем в състояние да попълни таблицата, както следва:
Сега ние се изгради дървото. За да направите това, да създадете празен формуляр в преглед на дизайна и изберете "ActiveX елементи":
В списъка изберете елемента "Microsoft TreeView контрол (6.0)"
Избраните елементи на формата на точното място в точното размера се добавят:
След това отидете на Visual Basic режима на кода и добавете следния код:
Вариант Сравни Database
За да работите с един възел, където родителите са нулеви
Вариант Сравни Database
Частни Под Form_Load ()
приглушена strRoot
strRoot = ""
Частни Под AddNode (ByVal ParentID Както стринга)
Задайте rsCommon = New ADODB.Recordset
Ако ParentID = "" Тогава
rsCommon.Open "SELECT EIA, Ðîäèòåëü, Èìÿ ОТ Req DP КЪДЕТО IsNull (Ðîäèòåëü)" "ORDER BY Èìÿ", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Направя, докато не rsCommon.EOF
TreeViewDep.Nodes.Add. Ул (rsCommon ( "ОВОС")) "$ KEY", rsCommon ( "Èìÿ")
TreeViewDep.Nodes.Item (ул (rsCommon ( "ОВОС")) "$ KEY"). Expanded = True
AddNode (ул (rsCommon ( "ОВОС")))
rsCommon.MoveNext
контур
rsCommon.Close
Задайте rsCommon = Нищо
още
rsCommon.Open "SELECT ОВОС, Ðîäèòåëü, Èìÿ ОТ Req DP КЪДЕ ОВОС <> Ðîäèòåëü И Ðîäèòåëü = " ParentID "ORDER BY Èìÿ", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Направя, докато не rsCommon.EOF
TreeViewDep.Nodes.Add ParentID "$ KEY", tvwChild, ул (rsCommon ( "ОВОС")) "$ KEY", rsCommon ( "Èìÿ")
TreeViewDep.Nodes.Item (ул (rsCommon ( "ОВОС")) "$ KEY"). Expanded = True
AddNode (ул (rsCommon ( "ОВОС")))
rsCommon.MoveNext
контур
rsCommon.Close
Задайте rsCommon = Нищо
Крайна сметка, ако
Здравейте ДОРОС трябва да попълни части от дървото. защото няколко хиляди елементи, изграждане на дървото отнема осезаем време. Сега, заредени клон, като кликнете върху елемента. Въпрос: как да получите в близост до "+" икона елемент. И това неприятно - това не е кликнал, не знам да има тази позиция дете елемент или не
Аз не съм работил с този контрол. Може пък показва всеки елемент в скоби броя на децата? Или качване, за да кликнете върху елемент най-малко едно от децата си?
Благодаря за съвета. Сега проблемът и да реши товарни дъщерните елементи. Но това не е много удобно, като се има предвид естеството на рекурсивни номерацията на елементи, които съм използвал. Исках малко по-лесно за себе си.
Свързани статии