ASP.net GridView ViewStates

Я использую Gridview для хранения записей, которые пользователь может щелкнуть по флажку в каждой записи, чтобы указать, что он / она хочет сохранить эту запись (после редактирования данных), и пользователь может выбрать столько записей, сколько он хочет, и сохранить их все однажды.

В приведенном ниже коде я зациклюсь на виде сетки и поищу флажок, чтобы сохранить запись. Если я отключу состояние просмотра Gridview. Я не могу зациклить его, но если я включил состояние просмотра gridview, то состояние просмотра gridview может достигать 1 МБ и выше.

Что будет лучшим способом уменьшить состояние представления на этом элементе управления girdview, или мой подход неверен?

3 ответа

Если вы не можете уменьшить размер вашего viewstate, вы можете попробовать альтернативное решение. Вы можете хранить свое представление на сервере. Этот пост блога показывает, как реализовать это:

Уменьшение размера страницы путем сохранения ViewState на сервере

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

Я думаю, что я использовал эту статью (это было давно) и пришлось изменить ее для SQL, так как при этом используется файловая система: Сохранение состояния просмотра в файловой системе

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

Некоторые полезные материалы:

  1. Эффективное перелистывание больших объемов данных

  2. GridView ObjectDataSource LINQ Пейджинг и сортировка

  3. Повышение производительности GridView за счет делегирования подкачки на SQL Server

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

Другие вопросы по тегам