Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.09.2006, 12:04
|
|||
|---|---|---|---|
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
Доброго времени суток. Бьюсь с такой вот проблемой: есть DataGrid, структура которого задается динамически (чтобы использовать шаблоны колонок, пришлось бы писать 2 десятка страниц вместо одной). Эту структуру ASP.NET не умеет сохранять. А когда при перезагрузке страницы DG пуст, он не генерирует событий (и система не вызывает обрабочиков), даже если причиной отправки страницы на сервак было именно событие DG. В результате после postback'а получается полная хрень: - DG пуст, обработчики событий не вызываются - значит, нужно заполнять DG снова при обработке Page_Load, так? - НО ЕСЛИ СОБЫТИЯ, которые будут обрабатываться после Page_Load, ИЗМЕНЯЮТ СОДЕРЖИМОЕ DG ? Получается, что DG будет заполнен, перезаполнен и переперезаполнен столько раз, сколько произойдет событий, но как минимум 2 (Page_Load + <чего-то случилось на клиенте>) В итоге (несколько тысяч записей в гриде) страница тормозит, как проклятая! Че тут можно сделать, народ?! (Можно ли, например, узнать что-то о произшедших событиях еще в page_load()?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.09.2006, 16:04
|
|||
|---|---|---|---|
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
Вариантов два в, Вашем случае: Первый это кешировать стандартными средствами выборку на несколько тысяч записей из БД в объекте Cashe. Второй если Вы использеете именно DataGrid а не GridView из 2.0 - организовать постраничный вывод, когда в запросе выбираются данные только для требуемой для отображения страницы, впрочем и здесь есть выход в виде ObjectDataSource. Заполняйте Грид только если страница грузится в первый раз, в методе PageLoad проверте(isPostBack == false), в остальных вариантах вынесите его заполнение в отдельный метод, который и вызывайте в требуемомом обработчике события. С ув. Сергей. История - это огромная система раннего предупреждения. Norman Cousins ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.09.2006, 17:20
|
|||
|---|---|---|---|
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
Вариантов два в, Вашем случае: Первый это кешировать стандартными средствами выборку на несколько тысяч записей из БД в объекте Cashe. Второй если Вы использеете именно DataGrid а не GridView из 2.0 - организовать постраничный вывод, когда в запросе выбираются данные только для требуемой для отображения страницы, впрочем и здесь есть выход в виде ObjectDataSource. Заполняйте Грид только если страница грузится в первый раз, в методе PageLoad проверте(isPostBack == false), в остальных вариантах вынесите его заполнение в отдельный метод, который и вызывайте в требуемомом обработчике события. С ув. Сергей. Проблемы не те, о которых Вы пишете. 1. Данные кэшируются 2. IsPostBack, естественно, проверяется 3. Постраничный вывод закэшированных данных реализован Проблема в том, что связывать данные приходится многократно! - Задал структуру Grid'а, связал данные в событии Load (иначе обработка событий не вызовется) - в обработчике события, которое изменяет фильтр, снова вынужден связывать данные с DG и так во всех последовательно вызываемых обработчиках, если не при любом клике форма отправляется на сервак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.09.2006, 15:11
|
|||
|---|---|---|---|
|
|||
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
Делай связку только один раз в PreRender и все получится. Ну и динамическое создание грида лучше в Page_Init проводить на всяк пожарный. Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2006, 14:51
|
|||
|---|---|---|---|
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
Делай связку только один раз в PreRender и все получится. Ну и динамическое создание грида лучше в Page_Init проводить на всяк пожарный. Я же сказал, если не сделать связку еще в Load, то событий не будет вообще. Я пробовал в LoadComplete. А PreRender выполняется еще позднее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.09.2006, 17:11
|
|||
|---|---|---|---|
|
|||
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
Тебе достаточно создать датагрид при постбеке в Page_Init (но не биндить его) - все данные вытянутся из вьюстейта Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.09.2006, 19:29
|
|||
|---|---|---|---|
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
Тебе достаточно создать датагрид при постбеке в Page_Init (но не биндить его) - все данные вытянутся из вьюстейта Вот только стоило мне объявить Init, как из ViewState исчезли все значения.. Не понимаю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.09.2006, 19:54
|
|||
|---|---|---|---|
|
|||
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
Задача то у этого грида какая? Выводить одну дататаблю, но показывать разные колонки в зависимости от параметров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.09.2006, 20:11
|
|||
|---|---|---|---|
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
Задача то у этого грида какая? Выводить одну дататаблю, но показывать разные колонки в зависимости от параметров? Вывод любой списочной инфы из БД. Видов таких списков сейчас - 10, позднее прибавится еще N штук:-). Для некоторых требуется еще и TreeView (структура списка - иерархическая), для некоторых - нет. Рисовать для каждого из них отдельную страницу как-то глупо. Различий в выводе практически нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.09.2006, 20:23
|
|||
|---|---|---|---|
|
|||
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
У этих списков есть что то общее? Когда мне надо на одной странице вываливать разнородные данные, но хотя бы с одной общей колонкой, я использую релэйшены, т.е. в темплэйтфилде кладу нужный контрол с биндом датасурса к соответствующему релейшену. Если по релейшену нет строк, то остаеться пустое поле (если вся колонка пустая, то скрываю ее). Датасурс какого типа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.09.2006, 20:52
|
|||
|---|---|---|---|
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
У этих списков есть что то общее? Когда мне надо на одной странице вываливать разнородные данные, но хотя бы с одной общей колонкой, я использую релэйшены, т.е. в темплэйтфилде кладу нужный контрол с биндом датасурса к соответствующему релейшену. Если по релейшену нет строк, то остаеться пустое поле (если вся колонка пустая, то скрываю ее). Датасурс какого типа? Ну, какая списочная инфа может храниться в БД организации и которая д.б. доступна сотрудникам в комантировках, чтобы составить внутренний документ? Да какая угодно - от контрагентов и договоров, до сотрудников, банк счетов и пр. Набор информации - разный и плохо предсказуемый, шаблон тут можно ну в самом крайнем случае юзать. Блин, должнобыть какое-то решение без извратов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.09.2006, 21:10
|
|||
|---|---|---|---|
|
|||
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
В таком случае я бы на странице объявил нонтайпед дататэйбл и поставил его на датасурс грида. При событии page_load при отсутствии постбэка заливал его из первой таблицы датасета. Далее при смене таблицы, через функцию чистил и снова заливал в дататейбл необходимую таблицу. Таким образом дататейбл кэширует информацию. Ivan Plaxin ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.09.2006, 21:21
|
|||
|---|---|---|---|
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
В таком случае я бы на странице объявил нонтайпед дататэйбл и поставил его на датасурс грида. При событии page_load при отсутствии постбэка заливал его из первой таблицы датасета. Далее при смене таблицы, через функцию чистил и снова заливал в дататейбл необходимую таблицу. Таким образом дататейбл кэширует информацию. Вы топик с начала читали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.09.2006, 21:24
|
|||
|---|---|---|---|
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
В таком случае я бы на странице объявил нонтайпед дататэйбл и поставил его на датасурс грида. При событии page_load при отсутствии постбэка заливал его из первой таблицы датасета. Далее при смене таблицы, через функцию чистил и снова заливал в дататейбл необходимую таблицу. Таким образом дататейбл кэширует информацию. Вы топик с начала читали? Пардон, не понял со злости Не умею пользоваться этим объектом (у меня за плечами только короткий мануал:-)) Надо попробовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.09.2006, 21:46
|
|||
|---|---|---|---|
Динамический DataGrid, ViewState и гарантированные тормоза |
|||
|
#18+
Тебе достаточно создать датагрид при постбеке в Page_Init (но не биндить его) - все данные вытянутся из вьюстейта Сделал, как ты советовал. Неизвестно куда исчезнувшие (после написания Page_Init) значения в StateBag заменил на HiddenField'ы с включенным вьюстейтом. Работает, раза в три быстрее чем тот дурацкий вариант. Спасибо! Буду очень благода, если скажешь еще что-ндь про причину падения StateBag'а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=18&mobile=1&tid=1389314]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 276ms |
| total: | 442ms |

| 0 / 0 |
