以编程方式将Web用户控件的对象添加到另一个用户控件中

时间:2012-01-05 13:22:50

标签: c# asp.net .net-3.5 webusercontrol

我有一个网页表单,我加载了一个Web用户控件(A)

当单击控件A上的按钮时,它会加载另一个名为infobox

的Web用户控件的数组

当我添加用户控件以控制Web用户控件A的集合时,它不会显示。

下面是代码:按下控件A的按钮

foreach (Categories category in CategoriesDataList)
            {
                InfoBox ib = new InfoBox();
                ib.LiteralName = category.Category_Name;
                span_tempList.Controls.Add(ib);
                ib = null;           
            }   



span_tempList is a `<span>` tag with `runat=server`

下面是HTML和cs Code for InfoBox控件

 public partial class InfoBox : System.Web.UI.UserControl
    {
        protected global::System.Web.UI.WebControls.Label ltrlName = new System.Web.UI.WebControls.Label();

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public InfoBox()
        {

        }

        public string LiteralName
        {
            get { return ltrlName.Text; }
            set { ltrlName.Text = value; }
        }

    }

- HTML -

<div style="width:10%;float:left;">
        <asp:Label ID="ltrlName" runat="server" Text="Label"></asp:Label>
    </div>
    <div style="width:20%;float:left;">
        <asp:Image ID="imgPicture" runat="server" ImageUrl="" />
    </div>
    <div style="width:70%;float:right;">

    </div>

还试图将控件添加到页面不起作用

1 个答案:

答案 0 :(得分:3)

如果要将其添加到页面的控件集合中,则不应通过构造函数创建UserControl的实例,而应使用LoadControl

InfoBox ib = (InfoBox)LoadControl("InfoBox.ascx");

另外,为什么要将控件设置为null?它将在页面生命周期结束时自动处理。