0

嗨,我喜欢在循环中添加动态添加 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"" />";

    }
4

3 回答 3

2

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

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

添加 :

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

于 2009-10-08T07:32:04.940 回答
0

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

  1. 您必须给他们 ID - 并在 Session 中记住他们
  2. 当控件执行任何 PostBack 操作(如 Click)时 - 您必须在 Page_PreInit 事件(通常框架会这样做)中刷新每个回发的确切集合 - 因为附加的事件不会触发。并且 Page_PreInit 必须刷新具有相同 ID-s 的确切集合。

这是可能的,但一开始并不那么简单。

这是一个详细的描述如何做到这一点。

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

于 2009-10-08T07:05:13.723 回答
0

您可以使用这种方式并使用“updatePanel”来动态更改您的控制器:

在这里,我使用“userControls_DeviceController”作为我的用户控制器类名称。

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);
}

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

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();
}

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

于 2014-10-01T10:57:05.197 回答