Значение по умолчанию для EnableClientScript равно true, поэтому по умолчанию расширение и свертывание узлов должно происходить на стороне клиента. Обратите внимание на примечания для этого свойства (выделение мое):
Используйте свойство EnableClientScript, чтобы указать, будет ли элемент управления TreeView отображать клиентский сценарий в совместимых браузерах для обработки событий развертывания и свертывания. Если для этого свойства установлено значение true, совместимые браузеры выполняют код для развертывания и свертывания узлов на клиенте. Данные узла дерева должны быть известны заранее, чтобы клиентский скрипт работал . Использование клиентского скрипта предотвращает публикацию на сервер каждый раз, когда узел разворачивается или сворачивается.
Что нужно проверить:
- Данные узла доступны для источника данных в виде дерева без обратной передачи
- Вы не установили EnableClientScript в false
- Вы не используете адаптер управления, который переопределяет это поведение
- Вы не путаете сервер с мыслью о том, что вы браузер более низкого уровня (эта страница работает в .NET 1.1, я думаю, поэтому она может отличаться от вашего сервера - она относится к моей версии IE с избыточной строкой UserAgent как «Downlevel», потому что проверка обрезается после 128 символов и завершается неудачно)
Если вы не можете иметь все доступные данные, убедитесь, что вы правильно устанавливаете PopulateOnDemand , PopulateNodesFromClient и TreeNodePopulate .
Ответ на комментарии
Да, нет никаких причин, по которым вы не можете делать то, что пытаетесь сделать с помощью элемента управления представлением дерева - на самом деле, он должен сделать большую часть этого для вас - если вы не поставляете все дерево заранее, в этом случае вам нужно будет предоставить методы, которые будут заполнять узлы с помощью PopulateNodesFromClient и TreeNodePopulate, при условии, что браузер распознается правильно (эти предыдущие ссылки имеют примеры как с обратными вызовами, так и без них).
Плагины jQuery Tree View, вероятно, будут более гибкими (я не использовал их, поэтому не знаю - я использовал элемент управления TreeView, который мы обсуждали, но получал функции «бесплатно», потому что я только У меня было небольшое дерево, и он поставлял все данные заранее), но для его настройки потребуется немного больше:
- Вам нужно будет использовать фреймворк jQuery, если вы его еще не используете
- Напишите веб-сервис, который он может вызывать для получения начальных данных вместе с последующими узлами.
- Потенциально беспокоиться о том, что случится с браузерами с ограниченной или без поддержки JavaScript.
3 может или не может быть кикером для вас - во всем, что мы делаем, мы стараемся использовать JavaScript для улучшения функциональности, а не для обеспечения функциональности - поскольку библиотека jQuery полностью на стороне клиента, если браузер не поддерживает JavaScript ваш элемент управления jQuery TreeView не появится, и вы, возможно, потеряете ключевой элемент навигации, в то время как элемент управления Server, такой как элемент управления ASP.NET TreeView, заметит, что JavaScript не поддерживается, и решит эту проблему, вернувшись к серверная (т.е. постбэк) версия элемента управления.
Вы также должны помнить, что jQuery не является вещью Microsoft (хотя они и сейчас поддерживают это), и существует уже довольно давно, и как предложение на стороне клиента, он работает независимо от серверная технология - MS предоставляет нам ряд «серверных» элементов управления в рамках ASP.NET, которые мы можем использовать, если захотим, и это может сделать нашу жизнь проще (обычно в краткосрочной перспективе в любом случае) ), но нам не нужно - ярким примером является недавно выпущенная платформа ASP.NET MVC, которая представляет собой другой способ создания веб-приложений на IIS с использованием стека .NET, но обычно без серверных элементов управления.