在循环中动态添加WebUser控件

时间:2009-10-08 06:56:52

标签: c# asp.net webusercontrols

嗨我喜欢在循环中添加动态添加WebUser控件

喜欢这个con1 con2 con3,或多或少取决于循环

有一个很好的方法来做到这一点

我的第一次尝试看起来像这样。但我不知道怎么告诉它使用下一个grpCon2

        foreach (DataRow Group in AllGroups.Rows)
    {
        GroupListControl grpCon1 = new GroupListControl();
        grpCon1.NickName = "STUFF";
        grpCon1.GroupName = "HARD";

        LiteralAddCOntrols.Text = @"<uc1:GroupListControl ID=""GrpCOn1"" runat=""server"" />";

    }

3 个答案:

答案 0 :(得分:2)

您需要使用loadcontrol(pathtoyourusercontrol),然后将控件返回到您想要的位置。

sharedUC uc = (sharedUC)LoadControl("~/sharedUC/control.ascx");
plcContent.Controls.Add(uc);

添加:

加载控件的页面aspx,您将能够使用类型化的引用。

答案 1 :(得分:0)

你可以这样做,但你必须记住两件事:

  1. 您必须向他们提供ID - 并在会话中记住它们
  2. 当控件执行任何PostBack操作(如Click)时 - 您必须在Page_PreInit事件(通常是框架)中刷新每个帖子上的确切集合 - 因为附加事件不会触发。 并且Page_PreInit必须使用相同的ID-s刷新精确集合。
  3. 这是可能的,但一开始并不是那么简单。

    以下是如何做到的详细说明。

    http://aspnet.4guysfromrolla.com/articles/092904-1.aspx

答案 2 :(得分:0)

您可以使用这种方式并使用&#34; updatePanel&#34;动态更改控制器:

这里我使用&#34; userControls_DeviceController&#34;作为我的Usercontroller类名。

userControls_DeviceController FAN1;
userControls_DeviceController FAN2;

protected void Page_Load(object sender, EventArgs e)
{
   FAN1 = (userControls_DeviceController)LoadControl("~/userControls/DeviceController.ascx");
   saloon.Controls.Add(FAN1);

   FAN2 = (userControls_DeviceController)LoadControl("~/userControls/DeviceController.ascx");
   saloon.Controls.Add(FAN2);
}

并且为了自定义您的用户控件,您可以在页面上放置一个计时器并使用更新面板来更改指定usercontrol的属性。

protected void Timer1_Tick(object sender, EventArgs e)
{
    int counter = Convert.ToInt32(Session["c"]);
    FAN1.SetDeviceIndex(counter);//here I change usercontrol picture FAN1
    FAN2.SetDeviceIndex(counter);//here I change usercontrol picture FAN2
    counter++;
    if (counter == 4)//I have 4 picture to changing.
    {
       counter = 0;
    }
    Session["c"] = counter;
    UpdatePanel1.Update();
}

我希望它可以帮助你...