ASP.NET TreeView JavaScript перед обратной передачей - PullRequest
4 голосов
/ 23 декабря 2008

Я пытаюсь закодировать то, что я считаю довольно обычным AJAX-шаблоном, используя TreeViews и UpdatePanels. Моя ситуация такова:

У меня есть TreeView внутри UpdatePanel. У меня есть литерал в другой UpdatePanel. Когда пользователь нажимает на узел внутри TreeView, содержимое Literal обновляется. Теперь, поскольку все это асинхронно, между щелчком и обновлением содержимого Literal, конечно же, существует временная задержка. В течение этого времени я хотел бы сделать две вещи:

1) Показать UpdateProgress и

2) Очистить содержимое литерала

Это сделано для того, чтобы пользователю не приходилось смотреть на старое содержимое, пока новый текст загружается асинхронно.

Кажется, я не могу понять, как легко это сделать (2). Я читал о обратных вызовах на стороне клиента и использовал GetCallbackEventReference, но это кажется очень сложным подходом к тому, что кажется простой проблемой.

В идеале я хотел бы оставить TreeView в покое, чтобы выполнить свою работу. Я не хочу сам получать содержимое и добавлять его в TreeView с помощью JS. Я просто хотел бы обнаружить событие изменения узла на стороне клиента, очистить Literal и позволить TreeView нормально работать.

Возможно ли это? Или клиентские обратные вызовы - мой единственный вариант?

Ответы [ 2 ]

1 голос
/ 23 декабря 2008

Вы захотите поиграть с PageRequestManager из библиотеки ASP.NET AJAX. Вот справочник MSDN для PRM ​​- http://msdn.microsoft.com/en-us/library/bb311028.aspx.

Просто предупредите, что Microsoft заявила, что TreeView может быть проблематичным в UpdatePanel, и вы также захотите очень внимательно относиться к производительности , особенно если у вас большой TreeView (см. Мою статью по оптимизации производительности UpdatePanel - http://www.aaron -powell.com / blog.aspx? id = 1195 ). Вы действительно должны смотреть на что-то вроде плагина jQuery (например: http://bassistance.de/jquery-plugins/jquery-plugin-treeview/).

Но чтобы на самом деле ответить на ваш вопрос, вам нужно:

  • Имеет обработчик событий BeginRequest, который затем очистит ваш литерал и даже может показать загрузку (я не фанат UpdateProgress, я предпочитаю гораздо более детальный контроль, который я получаю, делая это сам)
  • Используйте событие EndRequest, чтобы гарантировать, что загружаемый компонент исчезает

Вы также можете сделать TreeView AsyncPostbackTrigger 2-й UpdatePanel на странице или просто вызвать метод Update для него во время асинхронной обратной передачи TreeView

0 голосов
/ 25 апреля 2011

У меня была та же проблема, и я исправил ее, создав скрытый элемент HTML, который перекрывает область, которую я хочу скрыть. Я показываю это на Submmit и скрываю в window.onload во время обратной передачи. Это не красиво, но работает и должно быть быстрым.

...