Состояние отображения ascx потеряно между обратными передачами

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

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

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

Один аргумент в пользу использования курсора - когда необходимо обработать и обновить отдельные строки, специально для набора данных, который не имеет хорошего уникального ключа. В этом случае можно использовать пункт FOR UPDATE при объявлении курсора и обработать обновления с ОБНОВЛЕНИЕМ... WHERE CURRENT OF.

Примечание, что курсоры "серверной стороны" раньше были популярны (от ODBC и OLE DB), но ADO.NET не поддерживает их и AFAIK, никогда не будет.

6
задан Ulrik Rasmussen 20 November 2009 в 13:16
поделиться

2 ответа

Взгляните на ASP. Жизненный цикл страницы .NET и Общие сведения о состоянии представления . Состояние просмотра загружается после инициализации, поэтому вы не сможете получить к нему доступ в Page_Init . Вам лучше использовать скрытое поле.

Если вы настроены на использование состояния просмотра, самое раннее, что вы можете получить, это переопределить метод LoadViewState (не забудьте вызвать base.LoadViewState перед попыткой доступа это хотя).

14
ответ дан 8 December 2019 в 13:00
поделиться

Отслеживайте идентификатор UserControl перед обратной передачей, затем при обратной передаче воссоздайте элемент управления и присвойте идентификатор обратно, и он должен автоматически загрузить ViewState обратно.

1
ответ дан 8 December 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: