Доступ к элементу управления RadEditor из кода главной страницы ... он не находит никакого элемента управления radEditor, когда он там есть ... что не так? - PullRequest
0 голосов
/ 03 ноября 2010

В моем методе не выполняются операторы if if

Мастер-страница: -

Событие загрузки страницы: -

Control c = new Control();
DoSomething(c);

Мой метод: -

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

            }

        }

моя страница контента: -

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

[РЕДАКТИРОВАТЬ] нормально при отладке .. Я нажал «c», а затем «Быстрый просмотр» ... он говорит: «Имя« c »не существует в текущем контексте» (?!?!) так?

Ответы [ 4 ]

1 голос
/ 03 ноября 2010

Ну, я не уверен, вы можете получить доступ к элементам управления на странице, как эта.

Сначала: этот редактор должен быть, вероятно, в какой-то панели (или в другом контейнере), поэтому я должен выглядеть так:

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

Тогда попробуйте это:

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 голос
/ 03 ноября 2010

Вы должны изменить ситуацию и вызвать свой метод MasterPage из элемента управления контентом.

На своей главной странице добавить метод:

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 и т. д.

Master.DoSomething(Editor1);

Обновление

На главной странице следует искать дочерние элементы управления в элементах управления содержимым

ContentPlaceHolder1.FindControl("Editor1");

или выможет попробовать что-то вроде:

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 голос
/ 03 ноября 2010

Итак, главная страница отображается первой, поэтому у вас не будет доступа с главной страницы к любому элементу управления страницы содержимого. Вы можете достичь этого, используя события и передавая управление от контента к мастеру

udpate: Опять же - доступ к пользовательским элементам управления с главной страницы является недостатком во всем мастер-> дизайне контента. самое близкое, что я могу себе представить, это добавить статическую функцию

public static void AddDesign(RadEditor obj)
{
...
}

, а затем вызвать функцию из Page_Load пользовательского элемента управления

MASTER_PAGE_CLASS_NAME.AddDesign(RadEditor1);
0 голосов
/ 03 ноября 2010

События загрузки и рендеринга главной страницы запускаются после событий страницы содержимого (как сказано здесь ).Следовательно, элементы управления на странице содержимого должны быть доступны к моменту запуска этих двух событий?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...