2009-08-10 88 views
0

我創建了一個asp.net的自定義控件,如果我將其拖動到另一個網頁,它工作得很好,符合市場預期,但我想在定製控件,動態創建

Dim lCustomControl as new cldButton 
動態地使用它作爲

但是我不能解決如何做到這一點,編譯器不會將cldButton作爲控件來識別。我會將它添加到代碼中的後一頁中。我已將以下內容添加到web.config。

<controls> 
     <add tagPrefix="cldButton" tagName="cldButton" src ="~/UserControls/customControlButton.ascx"/> 

但它似乎使盡可能多的迪菲昂斯作爲我的打字正在

感謝

回答

2

您需要使用Page.LoadControl方法而不是新建來創建自定義控件。這裏是C#語法(對不起,我不是一個vb.net的傢伙);它應該很容易轉換:

Control customControl = Page.LoadControl("mycustomercontrol.ascx"); 
customControl.ID = "someID"; 
ICustomControl customControlType = (ICustomControl) customControl; 

我使用網站,所以我必須爲自定義控件創建一個接口並對其進行管理。如果您使用Web應用程序,則可以將customControl權限轉換爲控件的類型。

而且,在您完成所有設置後,您需要將控件添加到它的容器(我通常使用PlaceHolder控件)。

+0

棒極了,正在使用LoadControl(請參閱下圖),但沒有想到要投射到界面......該死的你vb.net。歡呼你的幫助 – spacemonkeys 2009-08-10 22:21:07

1

也許我誤解的問題,但如果你談論的是創建只用代碼控制(而不是標記),則不需要向web.config文件添加任何內容。

只需實例化一個新的控件實例,並在Page_Init期間將其添加到頁面的Controls集合中。

Dim myControl As new cldButton 

Page.Controls.Add(myControl) 
+0

對不起,沒有讓我的問題完全清楚,這就是我正在做的事情,但是IDE並沒有將Dim看作是新的cldButton(然後我打算將它添加到Cell,TableRow,然後是表已經在頁面上)不明白爲什麼 – spacemonkeys 2009-08-10 20:59:56

+0

我聽到你說的關於不將它添加到web.config中,但是當原始代碼(非常類似你的)拒絕編譯時,我在建議中添加了這個, – spacemonkeys 2009-08-10 21:03:46

+0

是你的控制在不同的項目或裝配中?你添加了一個參考嗎? – womp 2009-08-10 21:26:04