首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从母版页的代码RadEditor behind...its访问radEditor控件时,当there..whats出错时没有找到任何radEditor控件?

从母版页的代码RadEditor behind...its访问radEditor控件时,当there..whats出错时没有找到任何radEditor控件?
EN

Stack Overflow用户
提问于 2010-11-03 07:05:21
回答 4查看 1.5K关注 0票数 0

它在我的方法中不执行if块中的语句

母版:-

页面加载事件:-

代码语言:javascript
复制
Control c = new Control();
DoSomething(c);

我的方法:-

代码语言:javascript
复制
 protected void DoSomething(Control control)(
        {

            foreach (Control c in control.Controls)
            { 
                if(typeof(c).Equals(Telerik.Web.UI.RadEditor))
                {
                   Telerik.Web.UI.RadEditor rad = c as Telerik.Web.UI.RadEditor;

                   label1.Visible = true; label1.Text = "dhchk";
                   rad.CssFiles.Add("~/styles/myStyle.css"); 
                   rad.CssFiles.Add("~/styles/myStyle2.css");
                   rad.CssFiles.Add("~/styles/myStyle3.css");
                }            
                else
                {
                      DoSomething(c);
                }

            }

        }

我的内容页面:-

代码语言:javascript
复制
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    <telerik:RadEditor ID="Editor1" EnableEmbeddedBaseStylesheet="false"  EnableEmbeddedSkins=false runat="server">
    </telerik:RadEditor>

<telerik:RadEditor ID="Editor2" EnableEmbeddedBaseStylesheet="false"  EnableEmbeddedSkins=false runat="server">

    </telerik:RadEditor>

调试时编辑ok .i rt单击"c“,然后快速watch...it说”名称'c‘在当前上下文中不存在“(?!!)怎么会这样?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-03 08:37:51

好的,母版页首先呈现,这样您就无法从母版页访问任何内容页控件。您可以使用事件来实现这一点,并将控件从内容传递到主服务器。

udpate:从母版页访问用户控件是整个主->内容设计中的缺陷。我能想象的最接近的事情是添加静态函数

代码语言:javascript
复制
public static void AddDesign(RadEditor obj)
{
...
}

然后调用用户控件的Page_Load中的函数。

代码语言:javascript
复制
MASTER_PAGE_CLASS_NAME.AddDesign(RadEditor1);
票数 1
EN

Stack Overflow用户

发布于 2010-11-03 08:56:49

嗯,我不确定,你可以像这样访问页面中的控件。

首先:该编辑器可能位于某个Panel (或其他容器)中,因此我应该如下所示:

代码语言:javascript
复制
<asp:Panel ID="pnl1" runat="server">
    <telerik:RadEditor ID="Editor1" EnableEmbeddedBaseStylesheet="false" EnableEmbeddedSkins=false runat="server" />
    <telerik:RadEditor ID="Editor2" EnableEmbeddedBaseStylesheet="false" EnableEmbeddedSkins=false runat="server" />
</asp:Panel>

然后试试这个:

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{
    foreach (Controls c in pnl1.Controls)
    {
         if (c is Telerik.Web.UI.RadEditor)
         {
              // do you stuff ...
         }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2010-11-03 09:28:49

您应该更改周围的内容,并从content控件调用您的MasterPage方法。

在您的主页中添加以下方法:

代码语言:javascript
复制
public void DoSomething(Telerik.Web.UI.RadEditor rad)
{
    label1.Visible = true; label1.Text = "dhchk";
    rad.CssFiles.Add("~/styles/myStyle.css"); 
    rad.CssFiles.Add("~/styles/myStyle2.css");
    rad.CssFiles.Add("~/styles/myStyle3.css");         
}

从页面/内容控件中的适当事件调用函数。例如Page.Load、Editor1.Load等

代码语言:javascript
复制
Master.DoSomething(Editor1);

更新

在母版页中,应在内容控件中搜索子控件。

代码语言:javascript
复制
ContentPlaceHolder1.FindControl("Editor1");

或者你可以尝试这样的方法:

代码语言:javascript
复制
foreach (Control c in ContentPlaceHolder1.Controls)
{ 
     if(typeof(c).Equals(Telerik.Web.UI.RadEditor))
     {
         Telerik.Web.UI.RadEditor rad = c as Telerik.Web.UI.RadEditor;

         label1.Visible = true; label1.Text = "dhchk";
         rad.CssFiles.Add("~/styles/myStyle.css"); 
         rad.CssFiles.Add("~/styles/myStyle2.css");
         rad.CssFiles.Add("~/styles/myStyle3.css");
      }            
      else
      {
         DoSomething(c);
      }

 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4084849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档