загружать и отображать контент постепенно - PullRequest
1 голос
/ 27 мая 2011

Всем доброго времени суток.

Я разработал модуль dotnetnuke, в котором я потенциально могу выводить довольно большой объем данных, и загрузка страницы в браузер занимает довольно много времени.В настоящий момент, во время загрузки страницы, я просто получаю свои данные из БД и использую их как источник данных для заполнения сетки данных.

Что я хочу сделать, так это постепенно загружать и отображать содержимое страницы, чтобы быстро отобразитьстраницу для пользователя, а затем заполняйте сетку данных по частям, улучшая пользовательский опыт.Я пытаюсь реализовать функциональность AJAX для достижения этой цели, но мне трудно понять, как это сделать.

Я начал смотреть сегодня утром, и теперь я в состоянии выполнить некоторую базовую реализацию ajaxв Dotnentnuke, но у меня возникают трудности с поиском учебников по аналогичной реализации, или самостоятельно разобраться в этом.

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

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

Заранее спасибо,

Альберто

[РЕДАКТИРОВАТЬ]

Я частично решилМоя проблема:

Я изменил хранимую процедуру SQL, чтобы получить «n» строк, начиная с определенного индекса «x».

В каждом цикле таймера asp: я выбираю группу из «n» строк и сохраняю в состояние просмотра следующий начальный индекс «x», чтобы быть готовым к извлечению следующей группы строк.

На этом этапе в каждом цикле у меня есть часть всего моего списка, и я готов показать его пользователю.

Здесь кроется последняя проблема: возможно ли добавитьновые строки уже в элементах DataBound ??

Как уже упоминалось в исходном посте, в данный момент я использую asp: datagrid.Нет проблем в изменении элемента управления для отображения данных, но я не могу найти ссылку на какой-либо элемент управления, который имеет функцию «частичного связывания данных».

На данный момент единственным очевидным решением является добавление непосредственно каждого элемента управления.контролировать мою страницу, но мне кажется, что все, кроме "элегантный";Кроме того, каждая строка содержит 13 элементов управления, помещенных в довольно сложную TemplateColumn в моей таблице данных.

У кого-нибудь есть идея получше?

Заранее спасибо

[РЕДАКТИРОВАТЬ 2]

Я все ближе к решению (на самом деле два возможных решения)

  • РЕШЕНИЕ A Познакомившись с Ajax и динамическим дополнительным управлением, я техническивозможность «подделать» отображение данных сетки данных путем динамического добавления элементов управления.

  • РЕШЕНИЕ B Решение, которое я сейчас тестирую, состоит в том, что

Шаг 1 - привязать все строки к сетке данных, используя только очень небольшую часть данных, чтобы иметь все строки, но значительно сократить время загрузки.

Шаг 2 - во время асинхронных обратных вызовов я получаюгруппы строк и заполните остальные данные.

Я обновлю еще раз, когда у меня будет хороший результат.

Тем временем я все еще принимаю предложения и / или альтернативурешения

Богд день!

1 Ответ

0 голосов
/ 01 июня 2011

Поскольку «эта функциональность должна оставаться в конечном продукте», как вы прокомментировали, я предлагаю вам два решения:

Первое - это внедрение AJAX «Пожалуйста, сообщите нам, где именно ваша проблема»

Второе решение похоже на трюк «я делал это раньше»

вам не нужно каждый раз связывать все данные, вы можете изменить процедуру SQL, добавив новый столбец для рядов строк или номеров строк, которые вы можетеиспользуйте ROW_NUMBER () , чтобы сделать это.Теперь давайте вернемся к сетке в вашем модуле, допустим, что размер страницы вашей сетки составляет 10 строк, при событии page_load в не page.postback вы связываете результат для следующей команды SQL «Select -Columns- from Your_StoredProcedure_Or_View, где RowNumber между 1 и10 "

Если page.postback в событии page_load связывает результат для следующей команды SQL

" Выбрать -Columns- из Your_StoredProcedure_Or_View, где RowNumber между 20 и 30 "

--if page (3) например -

и вам необходимо сохранить текущую страницу в переменной или в строке запроса.Это просто работает,

...