2009-10-19 3 views
2

У меня есть MasterPage с панели обновления:UserControl постбэк не работает в UpdatePanel

<asp:UpdatePanel ID="UpdatePanel" runat="server" ChildrenAsTriggers="true" EnableViewState="False" 
       UpdateMode="Conditional"> 
       <ContentTemplate> 
        <div id="mainContent"> 
         <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
         </asp:ContentPlaceHolder> 
        </div> 
       </ContentTemplate> 
       <Triggers> 
       </Triggers> 
      </asp:UpdatePanel> 

Тогда у меня есть страница Default.aspx, который использует файл Masterpage:

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1"> 
<asp:PlaceHolder ID="plhCurrentItem" runat="server"></asp:PlaceHolder> 
</asp:Content> 

программно загрузить UserControls в заполнитель с id plhCurrentItem.

Проблема заключается в том, что я нажимаю кнопку в usercontrol, никакие события не срабатывают. Пользовательское управление просто исчезает, а панель обновления остается пустым.

Что я делаю неправильно?


Update

Код используется для добавления UserControls. Метод LoadControls вызывается из события Page_load.

Control ctlCurrentItem = null; 

public string currentControl 
{ 
    get { return ((string)Session["currentControl"]); } 
    set { Session["currentControl"] = value; } 
} 



public void LoadControls() 
{ 
    switch (currentControl) 
    { 
     case "Home": 
      ctlCurrentItem = Page.LoadControl("~/pages/Home.ascx"); 
      ctlCurrentItem.ID = "Home"; 
      break; 
     case "Resume": 
      ctlCurrentItem = Page.LoadControl("~/pages/Resume.ascx"); 
      ctlCurrentItem.ID = "Resume"; 
      break; 
     case "Projects": 
      ctlCurrentItem = Page.LoadControl("~/pages/Projects.ascx"); 
      ctlCurrentItem.ID = "Projects"; 
      break; 
     case "Contact": 
      ctlCurrentItem = Page.LoadControl("~/pages/Contact.ascx"); 
      ctlCurrentItem.ID = "Contact"; 
      break; 
     default: 
      return; 

    } 
    plhCurrentItem.Controls.Clear(); 
    plhCurrentItem.Controls.Add(ctlCurrentItem); 


} 
+0

Как вы программно загружаете пользовательские элементы управления? Какое событие? – DavidGouge

+0

На странице load event –

+0

Ahh, page_Load, зайдите с ответом _rick_schott. : D – DavidGouge

ответ

2

Помещенные LoadControls позвонить в OnPreInt события из page life-cycle:

использовать это событие для следующих целей:

  • Проверьте свойство IsPostBack, чтобы определить, является ли первый раз, страница в процессе.
  • Создание или воссоздание динамических элементов управления.
  • Динамическая установка главной страницы.
  • Динамически установить свойство Theme.
  • Прочитать или задать значения свойств профиля.
Смежные вопросы