При расширении веб-элемента управления asp.net при каком событии должны быть добавлены дополнительные веб-элементы управления?

StackOverflow https://stackoverflow.com/questions/296609

  •  08-07-2019
  •  | 
  •  

Вопрос

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

  

Исключение составляет   Sys.WebForms.PageRequestManagerServerErrorException:   Не удалось загрузить viewsstate. Контроль   дерево, в котором находится вид   загружен должен соответствовать дереву управления   который был использован для сохранения состояния просмотра во время   предыдущий запрос. Например,   при динамическом добавлении элементов управления   элементы управления, добавленные во время пост-возвращения должны   соответствовать типу и положению   элементы управления добавлены во время начальной   Запрос

Это было полезно?

Решение

На самом деле, Microsoft говорит, что вы должны переопределить CreateChildControls метод.

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

protected override void CreateChildControls(){
  Controls.Add(someControl);
  base.CreateChildControls();
}

Надеюсь, это поможет!

Другие советы

Вы должны добавить их в OnInit или в CreateChildControls. В любом случае, чтобы избежать проблем с ViewState, читайте эта ОТЛИЧНАЯ статья . Возможно, образец "4. Инициализация дочерних элементов управления программно " это ваш случай.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top