【问题标题】:Get Masterpage's Telerik RadToolBar in content page code behind在后面的内容页面代码中获取 Masterpage 的 Telerik RadToolBar
【发布时间】:2015-12-03 19:06:58
【问题描述】:

我现在正在使用 Telerik AJAX 开发一个 ASP.NET 网络表单。

母版页中有一个 Telerik RadToolBar 控件:

...
<td width="100%">
  <div class="toolDiv">
    <telerik:RadToolBar ID="tbToolbar" runat="server" AutoPostBack="True" OnButtonClick="Toolbar_ButtonClick"
      OnClientButtonClicking="Toolbar_ClientButtonClicking" />
  </div>
</td>
...

出于某种原因,我想在使用此母版页的内容页面代码之一中获取此工具栏控件,但是我尝试了

Master.FindControl("tbToolbar")

没有给我工具栏控制对象,我也试过MainMasterPage.FindControl(),没有运气。

有没有合适的方法来实现我想要在这里做的事情?谢谢

已编辑:

我的 tbToolbar 位于母版页中,结构如下:

<asp:Content ID="content" ContentPlaceHolderID="myPlaceHolder" runat="server">  
    ...
    <table>
      <tr>
        <td>
          <table>
            <tr>
              <td>
                <div>
                    <telerik:RadToolBar ID="tbToolbar">
  
</asp:Content>

EDITED2:(解决方案)

正如接受的答案所建议的,我添加了一个类来递归地找到我的控件,我将其发布在这里以防有人发现它有用:

private class ControlFinder<T> where T : Control
{
  private readonly List<T> _foundControls = new List<T>();
  public IEnumerable<T> FoundControls
  {
    get { return _foundControls; }
  }

  public void FindChildControlsRecursive(Control control)
  {
    foreach (Control childControl in control.Controls)
    {
      if (childControl.GetType() == typeof(T))
      {
        _foundControls.Add((T)childControl);
      }
      else
      {
        FindChildControlsRecursive(childControl);
      }
    }
  }
}

protected void Page_Load(object sender, EventArgs e)
{

  if (!IsPostBack)
  {
    ControlFinder<RadToolBar> controlFinder = new ControlFinder<RadToolBar>();
    controlFinder.FindChildControlsRecursive(Master);
    RadToolBar toolBar = controlFinder.FoundControls.FirstOrDefault();
    // my logic //
    if(toolBar != null) ...
  }

}

【问题讨论】:

  • tbToolbar 周围是否有其他服务器端控件,例如面板或类似控件?

标签: c# asp.net webforms telerik


【解决方案1】:

如果您的控件“tbToolbar”在 ContentPlaceHolder 中,那么您必须首先通过 id 找到 ContentPlaceHolder,然后您必须从该 ContentPlaceHolder 中找到您的控件。看看下面的链接:

To reference a control on the master page

如果仍然找不到控件,则 google 以递归方式查找 ASP.NET 控件。

【讨论】:

  • 感谢您的回复,我已经编辑在母版页中包含层次结构,我应该如何在这样的层次结构中获得工具栏控件?
  • 谢谢,我按照你说的用谷歌搜索并找到了一个简单的方法,它就像一个魅力,接受:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多