Ответы с форумов MSDN
Редактирование элементов TreeView в ASP.NET
Date: 28.07.2017 5:52:19
Стандартный TreeView не заточен под редактирование на клиенте. С ним только можно сделать как-то так
- положить на страницу невидимый TextBox
- при выборе элемента в TreeView сделать TextBox видимым
- JS-скриптом запихать его в нужную ячейку TreeView (он рендерится в HTML как таблица), скрыть исходный элемент
- при потере фокуса TextBox сохранить новое значение и все вернуть назад
Чтобы нормальное клиентское редактирование сделать, наверное надо взять с CodeProject ASP.NET AJAX TreeView control with templates, он поддерживает режим редактирования.
Message 717
Date: 29.07.2017 11:53:24
Статья по ссылке написана в 2005 году, и соответствует версии ASP.NET 1.0. Она могла устареть в техническом плане (используемые идеи, конечно, все еще применимы, но буквальный код может не работать). Для организации обработки
событий на клиенте, следует понимать следующее:
- Вы можете получить клиентский идентификатор большинства ASP.NET-элементов в JS коде с помощью вставки <?=myControl.ClientID ?> (ну по крайней мере это в C# так, не знаю как в VB синтаксис выглядит). В крайнем случае,
можно врубить ClientIdMode=Static и зашить в коде жесткий ID
- По клиентскому идентификатору, с помощью document.GetElementById, можно получить сам объект. Информацию о том, что умеет этот объект, можно узнать в документации, скажем, на сайте w3schools.com.
Например TreeView в HTML это
Table, который имеет событие ondblclick.
- Чтобы запланировать запуск определенного клиентского сценария, можно использовать свойство Page.ClientScript. Оно возвращает объект ClientScriptManager, у которого есть метод RegisterStartupScript.
- Если от клиентского скрипта нужно перейти к обработки на сервере, можно вызвать в JS функцию __doPostBack("clientId", null).
Она вызовет отправку страницы на сервер, как будто была нажата кнопка с указанным ClientId.
- Для обмена информацией между серверным и клиентским кодом удобно использовать HiddenField.
Используя эти принципы, можно реализовать то что вы хотите, комбинируя серверный и клиентский код. На страндартном TreeView это сложновато, но возможно.
Message 709
Date: 03.08.2017 6:04:52
Попробуйте у всех TreeNode установить SelectAction=TreeNodeSelectAction.None, должно отключить автоматический postback.
Message 706
Date: 11.08.2017 16:18:03
Конкретно для Literal, внезапно, это невозможно. Literal не является отдельным элементом в HTML, он просто вставляет свой текст в страницу как есть. Используйте Label, у него можно добавить обработчик через коллекцию label.Attributes
Автор: VadimTagil
Главная страница - Список тем - Репозиторий на GitHub