Построение TreeView динамически - PullRequest
1 голос
/ 14 июля 2009

Мне нужно построить дерево, используя следующие данные, которые поступают из БД:

ID          Name     ManagerID
180002      john     180001
180003      Michel   180002
180005      smith    180003

john
 |_Michel
    |_ smith

В частности, мне нужно сделать элемент управления ASP.NET TreeView. Глубина TreeView не фиксирована.

Ответы [ 2 ]

0 голосов
/ 14 июля 2009

Вы имеете в виду заполнение элемента управления TreeView иерархическими данными?

Вы можете проверить эту статью на ASPAlliance или эту статью на CodeProject .

0 голосов
/ 14 июля 2009

Вы не указали, используете ли вы C # или VB, но подход в любом случае одинаков.

Вы начинаете с создания TreeNode для каждого индивидуума верхнего уровня (те, у которых нет ManagerID или со специальным кодом ManagerID, который указывает на верхний уровень).

Затем, рекурсивно, для каждого человека, который отчитывается перед текущим менеджером, создайте новый TreeNode и добавьте его в качестве дочернего для текущего менеджера. Найдите всех, кто отчитывается перед ним, и примените к ним эту функцию. Остановитесь, когда никто не отчитывается перед текущим человеком.

Итак, если у вас есть DataSet с деталями этой таблицы, вы бы сделали что-то вроде этого (пример VB):

Sub PopulateTreeNode(
  CurrentNode As TreeNode,
  CurrentManagerID As String,
  Table As DataTable
) As TreeNode
  For Each Row As DataRow In _ 
  DataTable.Select("ManagerID = '" & CurrentManagerID & "'")
    Dim CurrentUser As String = Row("ID").ToString()
    Dim Node As New TreeNode(CurrentUser)
    PopulateTreeNode(Node, CurrentUser, Table)
    CurrentNode.Nodes.Add(Node)
  Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...