我有一个项目,我做了几个用户控件:一个图例和一个图例项。
在我的网页上,我正在检索要加载到LegendItem控件中的信息集合(设置基本文本和颜色信息)然后将这些项目添加到我的图例控件(图例控件上有一个面板,并且我在网页上引用了一个Legend用户控件。
我无法弄清楚如何正确获取LegendItem控件的句柄,以便我可以访问其属性并进行设置。
如果您需要帮助,我可以提供代码 - 但我被困住了,需要一些帮助!感谢您抽出宝贵时间阅读本文!
答案 0 :(得分:1)
理解动态控件的关键是理解页面生命周期。您需要确保在page_init事件期间创建控件,以确保在服务器端正确处理控件。
可用于帮助您管理动态创建的控件的优秀控件是dynamic controls placeholder
答案 1 :(得分:1)
您可以使用LoadControl实例化用户控件。
然后设置你的属性。
然后将控件添加到您在Legend控件上的asp.net占位符控件。
LegendItem li = (LegendItem)LoadControl("LegendItem.aspx");
li.name = "bob"
legend.placeholder.controls.add(li);
答案 2 :(得分:0)
我不确定你想做什么。如果您只需要将控件(静态地)添加到您的页面,请按以下步骤操作:
<%@ Page Language =“C#”%>
<%@ Register TagPrefix =“uc”TagName =“Spinner”Src =“〜\ Controls \ Spinner.ascx”%>
< HTML>
<身体GT;
< form runat =“server”>
< uc:Spinner id =“Spinner1” RUNAT = “服务器” MINVALUE = “1” MaxValue =“10”/>
< /形式>
< /体>
一旦你拥有了它,在后面的代码中你可以通过ID找到控件,将它转换为你的类型,然后做任何事情。顺便说一句,MinValue和MaxValue是在控件实现上定义的属性。
现在,如果要动态创建控件实例,则需要使用页面的LoadControl方法。此方法返回控件的实例,但要对其执行任何操作,您需要将其添加到页面的控件集合中,如下所示:
page.Controls.Add(mycontrol)
。
您可以在OnRender事件之前的页面生命周期中的任何位置执行此操作。请记住,一旦你这样做,控件将开始追赶 - 它将被推到它错过的所有页面生命周期事件。另请注意,如果页面被回发,您需要确保控件的位置与处理视图状态时的控件完全相同。
作为旁注,我认为做这种工作服务器方面有点过时了。你最好用JQuery和类似的东西做点什么
答案 3 :(得分:0)
这太奇怪了。我的aspx.cs页面无法识别我的控件,除非我给用户控件一个命名空间。现在我能够创建对象,正确投射等等。
感谢大家的尝试。