母版页中的 webpart 控件

Posted

技术标签:

【中文标题】母版页中的 webpart 控件【英文标题】:webpart control in master page 【发布时间】:2010-10-28 11:28:37 【问题描述】:

我在网页上使用的控件中有一个 web 部件。该网页使用母版页,并且 MP 中有一个内容持有者,可以控制对齐/设计问题。除了 webpart 控件之外,一切都很好。当我将 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);
            
        

显示模式.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;
        

【问题讨论】:

【参考方案1】:

我将这段代码移到了回发部分之外,现在可以正常工作了。

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

【讨论】:

以上是关于母版页中的 webpart 控件的主要内容,如果未能解决你的问题,请参考以下文章

如何从母版页中的控件调用 javascript 函数?

如何从母版页上的用户控件访问母版页中定义的数据集?

asp.net 如何从具有嵌套母版页的内容页更改父母版页中的控件

关于asp.net中页面事件加载的先后顺序

更新母版页中的面板和子页中的 asp 文件上传

母版页