2011-09-16 56 views
0

我添加了一個userControl頁面。名爲ModifyUC.ascx,在控件中有一個標籤和文本框。 當我在名爲RangeCreate.aspx的頁面中使用userControl時。我想設置標籤和文本框是不可見的。 當我使用的方法如何訪問UserControl中的控件屬性

protected ModifyUC createUC; 
((ExtendedLabel)createUC.FindControl("RangeCodeLable")).Visible = false;//show error 
((RadTextBox)createUC.FindControl("RangeCodeText")).Visible = false; 

的錯誤是

(ExtendedLabel)createUC.FindControl("RangeCodeLable") is null. 
so ((ExtendedLabel)createUC.FindControl("RangeCodeLable")).Visible. 
Object reference not set to an instance of an object. 
+1

檢查您的字符串值的拼寫。特別是,你確定你想要「標籤」而不是「標籤」?除此之外(並且沒有更多代碼),很難確定爲什麼FindControl返回null。 – rtalbot

回答

1

這將制定出更清潔,如果你暴露RangeCodeLableRangeCodeText作爲ModifyUC,或更好的公共屬性,如果你暴露的公共方法將它們都隱藏起來。

然後,當你在其他地方使用ModifyUC時,只需要對它進行類型轉換(如果需要的話),然後訪問公共屬性/方法。

0

你可以在這裏做的一件事是首先在頁面後面的用戶控件的代碼中創建2個公共屬性。 說

公共BOOL RangeCodeLabelVisible {獲得;設置;} 公共BOOL RangeCodeTextVisible {獲取;集;}

,並在此UC的頁面加載事件只是檢查這些值,讓你的標籤和文本框可見\無形。

現在您需要從使用UC的頁面設置這些屬性。 由於這些屬性是公開的,因此您可以訪問它們。

在這裏沒有設置值,這應該很好。

Rhanks,

拉胡爾

相關問題