Asp.net привязывает большой вид данных к DataGrid - PullRequest
1 голос
/ 16 ноября 2009

У меня есть данные с 2000 строк. При загрузке страницы я хочу привязать отображение данных к сетке данных объекта:

    dataGrid.DataSource = dv;
    dataGrid.DataBind();

Однако время отклика очень велико (пара минут). Что я могу сделать, чтобы сделать это быстрее? Или, по крайней мере, я не могу заморозить клиента?

Ответы [ 3 ]

2 голосов
/ 17 ноября 2009

Сначала проверьте ваш запрос. Как только вы получите его как можно быстрее (включая, возможно, предварительное кеширование данных каждую ночь во временной таблице или что-то в этом роде), перейдите к коду ASP.NET и сделайте это быстрее.

Выключите viewstate для вашей сетки, если можете. ViewState значительно увеличит размер вашей страницы. Часть вашей проблемы будет заключаться в том, чтобы просто обслуживать МБ необработанного HTML и viewstate, а затем отображать его.

Шаги, которые я бы предпринял:

  1. Отключить режим просмотра для сетки
  2. Если вы используете шаблоны в своих столбцах, попробуйте урезать их, комбинируя элементы управления, чтобы уменьшить количество повторяющихся привязок.
  3. По возможности используйте буквенные элементы управления в своих шаблонах (значительно легче, чем метки)
  4. Вытащите все стили и убедитесь, что вы используете css для уменьшения размера страницы.
  5. Если в ваших строках есть какой-либо javascript, рассмотрите возможность удаления любых встроенных сценариев и применения его после загрузки страницы с помощью Jquery или другого метода.
  6. Подумайте о подкачке ваших данных

Вы можете заставить записи 2k + работать на одной странице, но для этого придется сделать все очень жестко.

В крайнем случае, избавьтесь от сетки и просто используйте буквальный контроль и выводите сырой, чистый, жесткий HTML прямо к нему. Обязательно выключите viewstate для буквального управления и в этом случае.

0 голосов
/ 16 ноября 2009

Я бы сократил количество элементов, которые вы возвращаете в своем запросе, с помощью какого-либо фильтра по умолчанию. В любом случае, такое большое количество данных на экране, как правило, создаст плохой пользовательский интерфейс, а фильтр по умолчанию ускорит рендеринг страницы. Если пользователь запрашивает 2000 строк данных, дайте им их ... но я бы не стал делать подкачку с сеткой данных, потому что подкачка отбрасывает записи, которых нет на текущей "странице", после того, как он выполнит запрос и принесет назад все 2000 записей. Таким образом, если установить для страницы 20 элементов, запрос все равно вернет все 2000 записей, а сетка удалит остальные 1980 записи каждый раз, когда пользователь запрашивает новую страницу ...

0 голосов
/ 16 ноября 2009

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

Если это так, то пейджинг ускорит процесс.

...