DetailsView сбросить видимость на привязке? - PullRequest
0 голосов
/ 13 февраля 2011

Я использую Entity Framework 4.0 для привязки объекта базы данных к DetailsView на элементе управления ascx. В DetailsView у меня есть несколько asp: панелей, которые я хотел бы показать / скрыть в зависимости от того, что происходит во время визита этого человека.

Итак, первый раз на странице я устанавливаю panelA.Visible = false в событии FormView_OnLoad, и все хорошо - эта панель не выводится в HTML. Он слушает то, что я спрашиваю здесь.

После того, как я нажму кнопку отправить и отправить обратно, я снова проверяю происходящее и устанавливаю panelA.Visibe = false как в FormView_OnLoad, так и EntityData_OnUpdating. Но в этот раз, когда появляется страница, панель А показывает.

Я обнаружил, что могу скрыть эту панель только после обратной передачи, установив visible = false в DetailsView_PreRender или связав видимость с общедоступной переменной.

Я думаю, что, возможно, в жизненном цикле DetailsView снова привязывается к концу и отбрасывает мои настройки видимости, даже если они не связаны. Поэтому, чтобы показать / скрыть панели в DetailsView при обратной передаче, мне всегда нужно будет устанавливать видимость для DetailsView_PreRender или после?

Я здесь на правильном пути или что-то еще сбрасывает меня в последнюю секунду?

Почему я могу установить видимость в первый раз через страницу, но не обратно?

1 Ответ

0 голосов
/ 13 февраля 2011

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

...