2010-10-30 36 views
2

我想使用此解決方案來訪問Telerik的菜單項內部控制的項目無法訪問:控制在Telerik的從cs文件

ASCX代碼:

<asp:Label ID="DivLeave" runat="server"></asp:Label> 

在ascx.cs文件我運行此代碼禁用ASP標籤

RadMenuItem expenses = RadMenu1.FindItemByText("Expenses"); 
    Label DivLeave = (Label)expenses.FindControl("DivLeave"); 
    DivLeave.Visible = false; 

但是當我嘗試運行代碼,我得到這個錯誤:

{"Object reference not set to an instance of an object."} 

誰能告訴我如何解決這個問題。我真的需要運行這個服務器端代碼爲圍繞上面的代碼做了一些工作,服務器端,它都適合整齊...

親切的問候

+0

你會得到什麼錯誤?第二還是第三? – jasper 2010-10-30 15:18:02

回答

0

這是因爲你的標籤的名稱不是「 DivLeave「,當你的表單的HTML呈現。由於它位於用戶控件中,因此它將是頁面上用戶控件名稱的組合,然後是「DivLeave」。您應該能夠通過查看後面的代碼來查看該名稱。此外,爲什麼不能只使用FindControl來引用DivLeave.Visible呢?它是一個具有runat服務器屬性的ASP.NET控件,因此它應該可供您使用。

+0

像DivLeave.Visible一樣引用它的問題是它在一個telerik控件中。由於某種原因,它不允許我在控制中執行此操作... – Rup 2010-10-31 17:48:55

+0

因此,如果這是您嘗試隱藏的RadMenu項目,您可以執行類似於費用的操作.FindItemByText(「Leave」)。Visible =假? – bechbd 2010-11-01 14:29:02

0

您可以在Visual Studio中爲'費用'對象做一個快速查看並查看'DivLeave'是否可用?它可能發生這樣的情況:

  1. 標籤控件可用,但在對象的不同級別。
  2. 標籤控件本身沒有被添加到父'費用'中。

另外,在訪問開銷和DivLeave對象之前對它進行空檢查是個好主意。