2009-04-16 5 views
1

Мне нужно заполнить 4 GridViews на странице aspx, но я привязываю только данные к одному из них при загрузке страницы. Мне нужно окупить остальные 3 после загрузки страницы.C# Ajax Lazy Загрузка

Кто-нибудь знает лучший способ сделать это с помощью ajax?

В настоящее время я использую javascript для __doPostBack на кнопке, которая усложняет 3 GridViews, но, к сожалению, это приводит к полной загрузке страницы даже при использовании панели обновления. Мне нужна страница для загрузки, а затем заполнение GridViews, когда возвращаемые данные возвращаются.

любые предложения были бы высоко оценены.

ответ

2

То, как вы это делаете, должно работать нормально, но с помощью jquery для заполнения div через $ ("# targetDiv"). Load ("contentUrl"); функция может быть более чистым способом сделать это. Во всяком случае, для того, чтобы получить текущую работу реализации, там может быть несколько вещей, которые вы хотите посмотреть на:

  1. Я предполагаю, что EnablePartialRendering истинна на вашем ScriptManager (всегда стоит проверить!).
  2. Убедитесь, что eventTarget для вызова __dopostback настроен как триггер асинхронизации для ваших панелей обновлений или что он находится внутри UpdatePanel, если вы используете только одну UpdatePanel. (See here for details)
  3. Попробуйте вернуть false из кода javascript, который выполняется в обработчике события onclick, если вы привязали его к кнопке, чтобы убедиться, что форма не отправляется обычным образом вашим браузером при нажатии кнопки.
+0

Большое спасибо! Все, что мне нужно было сделать, это установить EnablePartialRendering в истинное объявление, с которым оно работало. – user91556

+0

Это здорово, рад, что у вас это работает :) –

+0

Awwww Все работает отлично на моей тестовой странице, но как только я использую главную страницу, она возвращается к обновлению всей страницы. EnablePartialRendering = true, __dopostback call - это асинхронный триггер, и функция __doPostBack возвращает false. – user91556

0

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

Один из методов, который я использовал, - это поместить скрытую (с CSS, а не любое свойство) кнопку на странице и «щелкнуть» ее с помощью javascript. Событие события нажатия кнопки должно быть подключено в коде страницы. Также кнопка должна находиться в панели обновления, которая либо содержит сетки, которые вы хотите привязать, либо имеет соответствующие триггеры, чтобы заставить их перезагрузить.

Вы можете посмотреть JQuery, чтобы получить доступ, когда этот код запущен. $ (Document) .ready (function() {/ * Ваш код здесь ... * /}); метод будет срабатывать после того, как будет доступна вся DOM, что быстрее, чем ожидание на всей странице для загрузки (изображения и т. д.).