У меня есть следующая функция, которая обновляет содержимое UpdatePanel путем добавления/загрузке ASCX пользовательского UserControl в заполнитель, который находится в default.aspx:пользовательский контент UserControl в UpdatePanel исчезает кнопка мыши постбэка
protected void NavigationTab_Click(string ascxpath)
{
Control ctrl = LoadControl(ascxpath);
//cphmaincontent is my asp ContenPlaceHoderId in masterpage
PlaceHolder phmaincontent = (PlaceHolder)cphmaincontent.FindControl("phmaincontent");
phmaincontent.Controls.Clear();
phmaincontent.Controls.Add(ctrl);
upmaincontent.Update();
}
Masterpage UpdatePanel:
<asp:UpdatePanel ID="upmaincontent" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="lbmsg" runat="server" Text=""></asp:Label>
<asp:ContentPlaceHolder ID="cphmaincontent" runat="server">
</asp:ContentPlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
Я зову NavigationTab_Click от моего навигационного управления, который является еще одним пользовательским элементом управления ASCX, мой объект Ctrl управления, который загружается динамически на каждый из них имеют кнопки и ярлык Я нажимаю кнопку, чтобы просто переназначить текст на ярлык.
и у меня есть этот следующий код на моем MasterPage просто получить путь управления ASCX:
protected override void OnInit(EventArgs e)
{
//raising an event to set ascx path
mainmenu.NavigatePath += new usercontrols.mainmenu.NavigationHandler(NavigationTab_Click);
base.OnInit(e);
}
до сих пор все работает хорошо, после загрузки моего объекта CTRl, вызвав функцию NavigationTab_Click я вижу свою Ct в заполнителе и имеет кнопку и метку, но проблема в этом, если я нажму на эту кнопку, она должна переназначить ярлык на какой-то текст, но вместо этого весь контент управления ctrl исчезнет, пожалуйста, помогите.
, если я, чтобы мои классы сериализации, то я не думаю, что мне нужно создать ViewState для каждого элемента управления Я просто сохранил объект класса, затем я отбросил его и правильно назначил им элементы управления. –
Кроме того, я добавил это «ViewState [" ASCXPATH "] = ascxpath;" в моей «NavigationTab_Click()», которую они все в masterpage.cs, затем я проверил в Page_Load(), если ViewState ["ASCXPATH"]! = null, снова вызовет ту же функцию "NavigationTab_Click (ViewState [" ASCXPATH "]. ToString ()) « , но я все еще не могу его загрузить, потому что когда я отлаживал его, ViewState [" ASCXPATH "] был все еще null, который, я думаю, не должен! –
@NazoTajrian: не храните экземпляр управления в ViewState, а только ту информацию, которая вам нужна, чтобы воссоздать их правильно. На самом деле я еще не разобрался, почему вы добавляете их динамически на страницу вместо переключения своего свойства «Видимый». У вас есть статическое количество NavigationTabs, не так ли? Если вы ответите «да», не добавляйте свой UserControl динамически. –