Передача данных в код сервера из клиентского элемента управления с использованием ASP.NET AJAX - PullRequest
1 голос
/ 31 октября 2008

У меня есть ListView на странице, которая отображает список виджетов. Когда пользователь нажимает на один из элементов в списке, я хочу отобразить ModalPopup , который содержит элементы управления, позволяющие пользователю работать с выбранным им элементом.

Я мог бы легко сделать это, поместив Panel и ModalPopupExtender в ItemTemplate ListView, но это означало бы один набор скрытых элементов управления для каждого виджета, который мог бы массово увеличить размер страницы. (Там будут некоторые довольно тяжелые элементы управления.) Вместо этого я хочу повторно использовать один ModalPopup для каждого из виджетов в списке.

Я провел некоторые поиски, но я не нашел ничего, что бы непосредственно относилось к моей ситуации. Однако из того, что я смог выяснить, я должен сделать что-то вроде этого:

  1. Поместите Panel и ModalPopupExtender на страницу внутри UpdatePanel.
  2. Создание пользовательского WidgetManipulator пользовательского элемента управления со свойством WidgetID. Поместите это в Panel вместе с парой кнопок OK / Cancel.
  3. В Javascript на странице прикрепите обработчик кликов к каждому виджету в ListView, который запускает обратную передачу на UpdatePanel.
  4. В событии UpdatePanel_Load на сервере отобразите ModalPopup, а затем установите WidgetID свойство на WidgetManipulator в качестве идентификатора выбранного виджета.
  5. В событии OKButton_Click или CancelButton_Click на сервере скрыть ModalPopup. Если нажата кнопка OK, сначала позвоните WidgetManipulator.SaveChanges().

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

Ответы [ 2 ]

1 голос
/ 02 ноября 2008

Если вы можете использовать вместо этого jQuery, вы можете сделать что-то вроде этих двух постов:

0 голосов
/ 31 октября 2008

Когда мне нужно передать данные с клиента на сервер в ASP.NET AJAX, я обычно использую asp: HiddenField с runat = "server". Оба могут видеть это свободно, но остерегайтесь потенциальной обратной асинхронности.

Звучит так, будто вам нужно уведомить сервер, по которому щелкнули виджет - вы можете использовать таймер для обратной передачи; или я бы выбрал вариант 5.

...