Отключение обратных передач на узлах TreeView при развертывании / свертывании - PullRequest
3 голосов
/ 15 апреля 2009

как?

Я пытался AutoPostback=false, но нажатие на узел все еще отправляет страницу назад. Есть идеи?

Ответы [ 4 ]

5 голосов
/ 06 июля 2010

путь вперед .....

Действие автоматического выбора для каждого узла - SelectExpand, часть «Select» этого перечисления интерпретируется как «Я выбрал что-то и нужно отправить обратно». Чтобы просто «развернуть» узел, не вызывая обратную передачу:

TreeView1.Nodes (0) .SelectAction = TreeNodeSelectAction.Expand

2 голосов
/ 15 апреля 2009

Значение по умолчанию для EnableClientScript равно true, поэтому по умолчанию расширение и свертывание узлов должно происходить на стороне клиента. Обратите внимание на примечания для этого свойства (выделение мое):

Используйте свойство EnableClientScript, чтобы указать, будет ли элемент управления TreeView отображать клиентский сценарий в совместимых браузерах для обработки событий развертывания и свертывания. Если для этого свойства установлено значение true, совместимые браузеры выполняют код для развертывания и свертывания узлов на клиенте. Данные узла дерева должны быть известны заранее, чтобы клиентский скрипт работал . Использование клиентского скрипта предотвращает публикацию на сервер каждый раз, когда узел разворачивается или сворачивается.

Что нужно проверить:

  1. Данные узла доступны для источника данных в виде дерева без обратной передачи
  2. Вы не установили EnableClientScript в false
  3. Вы не используете адаптер управления, который переопределяет это поведение
  4. Вы не путаете сервер с мыслью о том, что вы браузер более низкого уровня (эта страница работает в .NET 1.1, я думаю, поэтому она может отличаться от вашего сервера - она ​​относится к моей версии IE с избыточной строкой UserAgent как «Downlevel», потому что проверка обрезается после 128 символов и завершается неудачно)

Если вы не можете иметь все доступные данные, убедитесь, что вы правильно устанавливаете PopulateOnDemand , PopulateNodesFromClient и TreeNodePopulate .


Ответ на комментарии

Да, нет никаких причин, по которым вы не можете делать то, что пытаетесь сделать с помощью элемента управления представлением дерева - на самом деле, он должен сделать большую часть этого для вас - если вы не поставляете все дерево заранее, в этом случае вам нужно будет предоставить методы, которые будут заполнять узлы с помощью PopulateNodesFromClient и TreeNodePopulate, при условии, что браузер распознается правильно (эти предыдущие ссылки имеют примеры как с обратными вызовами, так и без них).

Плагины jQuery Tree View, вероятно, будут более гибкими (я не использовал их, поэтому не знаю - я использовал элемент управления TreeView, который мы обсуждали, но получал функции «бесплатно», потому что я только У меня было небольшое дерево, и он поставлял все данные заранее), но для его настройки потребуется немного больше:

  1. Вам нужно будет использовать фреймворк jQuery, если вы его еще не используете
  2. Напишите веб-сервис, который он может вызывать для получения начальных данных вместе с последующими узлами.
  3. Потенциально беспокоиться о том, что случится с браузерами с ограниченной или без поддержки JavaScript.

3 может или не может быть кикером для вас - во всем, что мы делаем, мы стараемся использовать JavaScript для улучшения функциональности, а не для обеспечения функциональности - поскольку библиотека jQuery полностью на стороне клиента, если браузер не поддерживает JavaScript ваш элемент управления jQuery TreeView не появится, и вы, возможно, потеряете ключевой элемент навигации, в то время как элемент управления Server, такой как элемент управления ASP.NET TreeView, заметит, что JavaScript не поддерживается, и решит эту проблему, вернувшись к серверная (т.е. постбэк) версия элемента управления.

Вы также должны помнить, что jQuery не является вещью Microsoft (хотя они и сейчас поддерживают это), и существует уже довольно давно, и как предложение на стороне клиента, он работает независимо от серверная технология - MS предоставляет нам ряд «серверных» элементов управления в рамках ASP.NET, которые мы можем использовать, если захотим, и это может сделать нашу жизнь проще (обычно в краткосрочной перспективе в любом случае) ), но нам не нужно - ярким примером является недавно выпущенная платформа ASP.NET MVC, которая представляет собой другой способ создания веб-приложений на IIS с использованием стека .NET, но обычно без серверных элементов управления.

0 голосов
/ 01 февраля 2016

добавить код ниже в файл CSS. Затем выберите свойство TreeView с именем NodeStyle-> CssClass = отключено

a.disabled { pointer-events: none; cursor: default; }

0 голосов
/ 15 апреля 2010

Древовидная структура asp.net не поддерживает эту функцию,

try obout treeview :

Он загружает узлы без перезагрузки всего дерева.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...