2012-01-26 2 views
4

У меня есть вопрос о viewstate и настраиваемых элемента управления в asp.net.Viewstate и пользовательские элементы управления в asp.net

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

Теперь скажите, что у меня есть дерево на странице и на основе выбранного узла я хотел бы загрузить определенный пользовательский элемент управления. Выбранный тип treeview не доступен во время OnInit, но доступен в OnLoad и после. Я также знаю, что если я добавлю пользовательский элемент управления на OnLoad страницы, цикл таможни будет продолжаться, начиная с OnInit, а затем до OnLoad и т. Д.

Итак, мой вопрос заключается в том, что OnInit пользовательского контроля все еще вызываемый, хотя я загружаю этот элемент управления в методе OnLoad для родителя, почему не заполняется viewstate для настраиваемого элемента управления?

Это потому, что родительский элемент содержит представление для детей, и если я загружаю детей из родительского OnLoad, то в представлении вид не доступно?

Как вы обычно загружаете пользовательские элементы управления, если у вас есть ситуация, описанная выше (с деревом)?

+5

Разве вы не можете разделить вопрос на параграфы? – gdoron

+0

Звучит правильно. Вы проверили, что деревья управления идентичны до и после обратной передачи? –

ответ

1

ASP.NET делает ViewState нагрузки для дочерних элементов управления, даже если они добавлены на страницу в OnLoad, так как этот пример демонстрирует:

protected override void OnLoad(EventArgs e) 
{ 
    Literal literal = new Literal(); 
    this.placeHolder.Controls.Add(literal); 
    if (!this.IsPostBack) 
     literal.Text = "I'm still here after a postback."; 
} 

Обратите внимание, что по умолчанию ASP.NET загружает ViewState на основе индексов дочерних элементов управления, поэтому убедитесь, что порядок ваших элементов управления согласован с одной обратной записью на следующую.

Смежные вопросы