在C#asp.net中使用User控件作为动态控件(可能是文字控件)

时间:2014-11-14 11:02:44

标签: c# asp.net user-controls

我有一个用户控件,它是一个图像按钮。 我希望动态添加该控件" n"在我的网页上的时间。 " N"来自数据库。 我试过这段代码: 在" aspx":

   <%@ Register TagPrefix="uc" TagName="imgbtn"         Src="~/components/seatfromdb/usercontrol/UC_imgbutton.ascx" %>
.........................................
    //some code goes here
.......................................
     <uc:imgbtn ID="uc_imgbtn"
                runat="server"
                />

&#34; cs&#34;:

for(int i=0;i<5;i++)
{
     UserControl uc = new UserControl();
               uc = uc_imgbtn;
                //uc.Attributes.Keys = "~/images/buttonorange.png";
                //uc.ID = "uc" + i.ToString();
                //uc.Height = 30;
                plhdr_seat.Controls.Add(uc);
                plhdr_seat.Controls.Add(new LiteralControl("<br />"));
 }

但是控制&#34; uc&#34;只添加了一次页面。为什么? 请帮我这个代码。

2 个答案:

答案 0 :(得分:0)

这是因为您始终将uc_imgbtn分配给new UserControl();。换句话说,您总是将相同的现有控件分配给plhdr_seat.Controls集合。

查看this link上的注意了解详情:

  

Control只能分配给一个Control.ControlCollection   时间。如果Control已经是另一个控件的子控件了   在将控件添加到另一个控件之前从该控件中删除。

如果您想每次向uc_imgbtn集合添加新的plhdr_seat.Controls控件,则应将代码更改为:

UserControl uc = new UserControl(); // change this
uc = uc_imgbtn; // remove this

在第一行中,您必须确保正确初始化uc控件。从我的代码中可以看出,这应该有效:imgbtn uc = new imgbtn();

答案 1 :(得分:0)

请勿创建UserControl,请调用Page.LoadControl方法获取UC_imgbutton的新实例。

for(int i = 0; i < 5; i++)
{
  UC_imgbutton uc = (UC_imgbutton)LoadControl("~/components/seatfromdb/usercontrol/UC_imgbutton.ascx");
  //uc.Attributes.Keys = "~/images/buttonorange.png";
  //uc.ID = "uc" + i.ToString();
  //uc.Height = 30;
  plhdr_seat.Controls.Add(uc);
  plhdr_seat.Controls.Add(new LiteralControl("<br />"));
}