Динамически добавлять элементы управления WebUser в цикле - PullRequest
0 голосов
/ 08 октября 2009

привет, я хотел бы добавить динамически добавлять элементы управления 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 ]

2 голосов
/ 08 октября 2009

Вам нужно использовать loadcontrol (pathtoyourusercontrol), а затем и элемент управления вернуться на свою страницу в нужном месте.

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

Добавить:

На страницу aspx загружается элемент управления и вы сможете использовать напечатанную ссылку на него.

0 голосов
/ 01 октября 2014

Вы можете использовать этот способ и использовать "updatePanel" для динамического изменения ваших контроллеров:

здесь я использую "userControls_DeviceController" в качестве имени моего класса 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);
}

, а также для настройки вашего пользовательского контроля вы можете установить таймер на своей странице и использовать панель обновления для изменения свойств указанного пользовательского контроля.

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

Надеюсь, это поможет вам ...

0 голосов
/ 08 октября 2009

Вы можете сделать это, но вы должны помнить две вещи:

  1. Вы должны дать им удостоверение личности - и запомнить их в сеансе
  2. Когда элементы управления выполняют какие-либо действия PostBack (например, Click) - вы должны обновлять точную коллекцию для каждого сообщения обратно в событии Page_PreInit (что обычно происходит в фреймворке) - потому что присоединенное событие не сработает. И Page_PreInit должен обновить точную коллекцию с теми же идентификаторами.

Это возможно, но вначале все не так просто.

А вот подробное описание, как это сделать.

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

...