2009-05-23 6 views
0

J'ai un composant WebPart dans un champ que j'utilise sur une page Web. La page Web utilise une page maître et un détenteur de contenu dans le point de gestion peut contenir des contrôles pour les problèmes d'alignement/de conception. Tout fonctionne bien avec ceci, mais le contrôle webpart. Quand je mets la partie Web dans le conteneur je perds la capacité de déplacer les parties autour mais dès que je le déplace hors du conteneur cela fonctionne bien.contrôle webpart dans le gabarit

default.aspx

/// <summary> 
     /// Set the selected item equal to the current display mode. 
     /// </summary> 
     /// <param name="sender"></param> 
     /// <param name="e"></param> 
     public void Page_PreRender(object sender, EventArgs e) 
     { 
      MyWebPartManager wpm = (MyWebPartManager)WebPartManager.GetCurrentWebPartManager(Page); 


      Control control = (Control)Master.FindControl("divReturnBack"); 
      if (control != null) 
      { 
       control.Visible = true; 
       control.Controls.Add(DisplayModeMenul1); 
      } 
     } 

displaymode.ascx

MyWebPartManager webPartManager; 

     public void Page_Init(object sender, EventArgs e) 
     { 
      Page.InitComplete += new EventHandler(InitComplete); 
     } 
     public void InitComplete(object sender, System.EventArgs e) 
     { 
      webPartManager = (MyWebPartManager)WebPartManager.GetCurrentWebPartManager(Page); 
      String browseModeName = WebPartManager.BrowseDisplayMode.Name; 

      foreach (WebPartDisplayMode mode in 
       webPartManager.SupportedDisplayModes) 
      { 
       String modeName = mode.Name; 
       if (mode.IsEnabled(webPartManager)) 
       { 
        ListItem listItem = new ListItem(modeName, modeName); 
        ddlDisplayMode.Items.Add(listItem); 
       } 
      } 
     } 

     public void ddlDisplayMode_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      String selectedMode = ddlDisplayMode.SelectedValue; 

      WebPartDisplayMode mode = webPartManager.SupportedDisplayModes[selectedMode]; 
      if (mode != null) 
      { 
       webPartManager.DisplayMode = mode; 
      } 
     } 

     public void Page_PreRender(object sender, EventArgs e) 
     { 
      ListItemCollection items = ddlDisplayMode.Items; 
      int selectedIndex = items.IndexOf(items.FindByText(webPartManager.DisplayMode.Name)); 
      ddlDisplayMode.SelectedIndex = selectedIndex; 
     } 

Répondre

0

je me suis déplacé ce code en dehors de la section postback et il fonctionne très bien maintenant.

// move to container in masterpage 
      Control control = (Control)Master.FindControl("divReturnBack"); 
      if (control != null) 
      { 
       control.Visible = true; 
       control.Controls.Add(DisplayModeMenul1); 
      } 
+0

Je suis curieux, où modifiez-vous cela? –

Questions connexes