2009-08-10 81 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