簡體   English   中英

在內容頁面后面的代碼中獲取Masterpage的Telerik RadToolBar

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM