Динамически загружаемые элементы управления и постоянство в ASP.NET - PullRequest
2 голосов
/ 01 сентября 2010

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

protected void Page_Load(object sender, EventArgs e)
{
   MyControl control = (MyControl)LoadControl(...);
   control.Initialize(GlobalClass.controlData);
   //^gives the control the data it had previously.  
   //Or use ViewState["controlData"] if serializable.
   Controls.Add(control);
}

Я чувствую, что должен использовать if (!IsPostBack) {}, но я не знаю, как и почему.

Напротив, если я помещу элементы управления вразметка, то элементы управления, кажется, остаются постоянными.Например, кнопка в разметке запоминает любые изменения в свойстве Text (я так думаю?).

<asp:Button ID="buttonText" runat="server" 
            Text="Text Segment" onclick="buttonText_Click" />

Как мне поддерживать некое подобие постоянства с динамически добавленными элементами управления, такими как элементы управления, добавленные через метку-до?Это избавило бы меня от лишней работы и разочарования.

Спасибо.

(Я программировал в течение небольшой вечности, но чем больше я работаю с ASP.NET, тем больше я запутался.прямо противоположное тому, как я понял, научиться работать :-П.)

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Для динамически загружаемых элементов управления, если вы загрузите их во время события Page_Init, вы можете добавить их в ViewState, и они смогут сохранять состояние из PostBack в PostBack.

1 голос
/ 01 сентября 2010

Я понимаю вашу мысль.Да, это громоздко, но так работает технология без сохранения состояния.

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

Следуйте советам, которые я дал в этом ответе:

Доступ к элементам управления, создаваемым динамически (c #)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...