我按照this post動態地向頁面添加自定義用戶控件。在動態添加的UserControl上設置屬性
但是,我需要在用戶控件上設置一個屬性,並將其添加到頁面中。我怎麼做?
代碼片段將是不錯的:)
詳情:
我有一個公共領域的自定義用戶控件(屬性...如公衆詮釋someId;)
正如我添加UserControl到一個頁面,其類型是UserControl。我只是將它投入到MyCustomUCType並設置一個屬性在一個強制控制?
p.s.看起來我畢竟已經回答了我自己的問題。
我按照this post動態地向頁面添加自定義用戶控件。在動態添加的UserControl上設置屬性
但是,我需要在用戶控件上設置一個屬性,並將其添加到頁面中。我怎麼做?
代碼片段將是不錯的:)
詳情:
我有一個公共領域的自定義用戶控件(屬性...如公衆詮釋someId;)
正如我添加UserControl到一個頁面,其類型是UserControl。我只是將它投入到MyCustomUCType並設置一個屬性在一個強制控制?
p.s.看起來我畢竟已經回答了我自己的問題。
啊,我回答了你添加額外的澄清之前。簡而言之,是的,只是把它作爲你的自定義類型。
我將其餘的答案留在這裏作爲參考,雖然它沒有出現,你會需要它。
從其它問題的代碼借款,並假設所有的用戶控件,可向從同一個基類繼承,你可以做到這一點。
創建一個新類來充當基控制:
public class MyBaseControl : System.Web.UI.UserControl
{
public string MyProperty
{
get { return ViewState["MyProp"] as string; }
set { ViewState["MyProp"] = value; }
}
}
那麼你的用戶控件來從你的基類,而不是用戶控件繼承更新:
public partial class SampleControl2 : MyBaseControl
{
....
然後,在地方您加載的控件,更改此:
UserControl uc = (UserControl)LoadControl(controlPath);
PlaceHolder1.Controls.Add(uc);
:
MyBaseControl uc = (MyBaseControl)LoadControl(controlPath);
uc.MyProperty = "foo";
PlaceHolder1.Controls.Add(uc);
是的,您只需將控件投射到適當的類型。 EX:
((MyControl)control).MyProperty = "blah";
這不適用於用戶控件的網站項目 – 2009-02-03 21:21:56
它工作得很好。 – 2009-02-03 21:33:25
「當我添加一個用戶控件的頁面,其 類型是用戶控件我只是 丟在MyCustomUCType和設置屬性 上投控制。?」
這就是我要做的。如果你實際上使用了加載不同控件的示例代碼,那麼我會使用if(x是ControlType)。
if(x is Label) { Label l = x as Label; l.Text = "Batman!"; } else //...
編輯:現在是2.0兼容
設置屬性是什麼意思? html屬性?你什麼時候嘗試在DataBound事件上添加屬性?哪個事件是你創建控件的? – bendewey 2009-02-03 20:46:06
鏈接的帖子解釋他正在嘗試做什麼 – 2009-02-03 20:47:53