Динамически создавать древовидное представление ⇐ C#
Динамически создавать древовидное представление
Я пытаюсь создать динамическое древовидное представление, используя 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); } } }
Я пытаюсь создать динамическое древовидное представление, используя 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); } } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение