ASP.NET: повторитель привязки с использованием jQuery? - PullRequest
2 голосов
/ 12 июня 2009

У меня есть элемент управления Repeater, который я связываю на стороне сервера. Он повторяет серию div и делает это без проблем. У меня есть несколько кнопок, которые я использую для сортировки повторителя (самые новые, самые ранжированные, случайные), и это работает так, как должно.

Я хотел бы улучшить пользовательский опыт, заставляя кнопки сортировать div-ы, используя Ajax / jQuery, чтобы не было обратной передачи страницы, и пользователь не потерял свое место на странице.

Есть ли способ использовать jQuery для доступа к серверному коду, подобному этому, или использовать Ajax для повторной привязки серверного элемента управления?

Спасибо ... если мне нужно перечислить больше деталей, пожалуйста, дайте мне знать!

РЕДАКТИРОВАТЬ Я знаю об UpdatePanels, но я бы предпочел не использовать их, если мне не нужно.

Ответы [ 4 ]

10 голосов
/ 12 июня 2009

Рассматривали ли вы перемещение функции повторителя на клиентскую сторону ?

Таким образом, функциональность, такую ​​как подкачка и сортировка, добавить не очень сложно. Фактически, вы можете довольно сильно опираться на платформу, используя службы данных ADO.NET в качестве уровня службы.

6 голосов
/ 12 июня 2009

Это относительно просто.

  1. Переместите свой ретранслятор в отдельный пользовательский элемент управления, скажем, MyControl. Теперь повторитель на вашей странице становится uc1: MyControl.

  2. Оберните MyControl в div:

    <div id="mydiv">
      <uc1:MyControl ID="MyControl1" runat="server" />
    </div>
    
  3. Создайте новую страницу, pgMyControl.aspx, которая содержит только MyControl.
  4. На главной странице добавьте обработчики jQuery к ссылкам сортировки. Используйте метод load для динамической замены содержимого div:

    $('#link_sort_random').click(function()
    {
      $("#mydiv").load("pgMyControl.aspx&sort=random");
    }
    
  5. Используйте QueryStringParameter в источнике данных внутри MyControl, чтобы изменить порядок. Или используйте Request.QueryString в файле с выделенным кодом.
0 голосов
/ 13 июня 2009

Возможно, это OT, но вы можете изменить способ связывания даже клиентского и серверного элементов управления, используя преобразование XSLT вместо классических серверных элементов управления. Вы можете найти пример здесь (извините, по-итальянски ...).

0 голосов
/ 12 июня 2009

Использование updatePanel или обратной передачи Ajax в jquery - это одно и то же. Оба попросят ваш код извлечь новый запрос, затем сделать ваш элемент управления визуализированным, а затем передать HTML-код клиенту в качестве частичного рендеринга страницы, а затем вставить содержимое вместо старого содержимого в том же месте DOM.

Значительно сложнее заставить JQuery и ASP.NET общаться друг с другом таким образом из-за природы веб-элементов управления и их жизненного цикла, который определяет, когда они рендерится. UpdatePanel знает, как вызывать все это, поддерживать правильное состояние просмотра и возвращать результат в правильное местоположение.

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

РЕДАКТИРОВАТЬ: Если у вас есть проблемы JQuery с панелями обновления, это, вероятно, из-за того, что создаются новые узлы DOM. JQuery имеет прямое событие , чтобы справиться с этим. Он заметит, когда будут созданы новые элементы DOM, и сопоставит их с вашим селектором даже после того, как документ будет готов.

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