2009-05-23 11 views
0

Webページ上で使用しているコントロールにwebpartがあります。 Webページにはマスターページが使用されており、MPにはアライメント/デザインの問題のコントロールを保持できるコンテンツホルダがあります。すべてがこれでうまく動作しますが、webpartコントロールはうまくいきます。ウェブパーツをコンテナに入れると、ウェブパーツを動かす能力が失われますが、コンテナから移動するとすぐに正常に動作します。マスターページのwebpartコントロール

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; 
     } 

答えて

0

私はポストバック部外このコードを移動し、それが今で正常に動作します。

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

私は好奇心が強いですが、これはどこで編集しますか? –

関連する問題