![](/img/trans.png)
[英]How do you access Telerik RadEditor control (embedded in Content page) in master page's code behind?
[英]Get Masterpage's Telerik RadToolBar in content page code behind
我現在正在使用Telerik AJAX開發ASP.NET Web表單。
主頁面中有一個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>
編輯2 :(解決方案)
正如接受的答案所建議的那樣,我添加了一個類以遞歸地找到我的控件,如果有人發現它有用,我會在此處發布它:
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”位於ContentPlaceHolder內,則必須首先通過ID查找ContentPlaceHolder,然后必須從該ContentPlaceHolder中找到控件。 看一下下面的鏈接:
如果仍然找不到控件,則Google遞歸地查找Find ASP.NET控件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.