Динамически создавать древовидное представлениеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Динамически создавать древовидное представление

Сообщение Anonymous »


Я пытаюсь создать динамическое древовидное представление, используя C# и asp.net.

Я создал древовидное представление отложенной загрузки, используя атрибут заполнения по запросу.

> OnTreeNodePopulate="treeview1_TreeNodePopulate"> В коде я загрузил свои данные, но сначала заполняю родительские узлы. Чего я хочу добиться, так это то, что когда я нажимаю на родительский узел, я затем выполняю обратную передачу, затем заполняю его дочерний узел, а затем снова заполняю его дочерний узел, и так сейчас. У меня есть тысячи данных, поэтому я не хочу, чтобы все данные заполнялись из-за производительности. Вот почему я хочу заполнить дочерние элементы узла только на основе выбранного узла. См. пример ниже:

>Питер - - >пользователь1 - - >пользователь2 - - >пользователь3 - - >Пароль пользователя - - >ИД пользователя >Джон >Дэвид >Джек - - >пользователь1 - - >пользователь2 - - >пароль пользователя - - >ИД пользователя - - >Разрешения >Лаура - - > админ - - > разрешения -- > пользователь1 -- > пользователь2 - - >пароль пользователя - - >ИД пользователя - - >Разрешения >... >... >... Как видите, может быть несколько родительских узлов и несколько слоев. Они будут заполняться динамически на основе того, что я передаю в БД. Каждый раз, когда я нажимаю на узел, он расширяет узел и заполняет его дочерний элемент с помощью обратной передачи, а затем, когда вы снова нажимаете на его дочерний элемент, он выполняет обратную передачу и снова заполняет свой дочерний элемент и т. д. Поэтому мне нужна была помощь о том, как создать динамическое древовидное представление.< /п> С# :

private void LoadTreeview() { //Загрузка данных // Получаем данные из БД. //проходим по списку и создаем его родительские узлы. foreach (var dxm в списке) { TreeNode tnParent = CheckNodeExist(dxm.Node); //Я проверяю, существует ли оно. если (tnParent== ноль) { TreeNode tn = новый TreeNode(); tn.Text = dxm.Node; tn.Value = dxm.Id.ToString(); tn.SelectAction = TreeNodeSelectAction.None; тн.Свернуть(); TreeView1.Nodes.Add(ТН); tn.PopulateOnDemand = правда; //ленивая загрузка tnParent = тн; } } Этот метод вызывается при загрузке страницы.

При TreeNodePopulateEvent: (при щелчке по узлу)
protected voidtreeview1_TreeNodePopulate(отправитель объекта, TreeNodeEventArgs e) { Список ICollection = новая коллекция(); список = GetData(e.Node.Text); // передаем выбранный вами узел, он пойдет и проверит в БД, есть ли у узла дочерние узлы. Если да, то вернется с дочерними узлами. foreach (var dxm в списке) { TreeNode tnChild = CheckNodeExist(dxm.Node); если (tnChild == ноль) { TreeNode tn = новый TreeNode(); tn.Text = dxm.Node; tn.Value = dxm.Id.ToString(); tn.SelectAction = TreeNodeSelectAction.None; тн.Свернуть(); tn.PopulateOnDemand = правда; тнЧилд = тн; tnChild.ChildNodes.Add(tnChild); } } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»