Добавление пользовательского элемента управления динамически в ASP.NET - PullRequest
1 голос
/ 15 марта 2012

Я знаю, что этот вопрос задавался много раз, но все же моя проблема не решена,

Я пытаюсь перебрать список объектов и заполнить шаблон "пользовательский элемент управления" этим объектом, как список результатов поиска.

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

вот код, который я проиллюстрирую кнопкой вместо пользовательского элемента управления:

protected override void OnInit(EventsArgs e)
{
   for(int i=0;i<10;i=i+1)
   {
        Button b = new Button();
        b.ID = "Button" + i;
        b.Click += new System.EventHAndler(this.Button_OnClick);
        Controls.Add(b);
    }
 base.OnInit(e);
}

private void Button_OnClick(object Sender,System.EventsArgs e)
{
     Response.Redirect("~/Some.aspx");
}

public override void VerifyRenderingInServerForm(Control control)
{
    return;
}

Он никогда не вызывает метод Button_OnClick.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 15 марта 2012

Кнопка никогда не сработает, потому что она не является дочерней для серверного элемента управления формой.

Если элемент управления формой еще не создан, его необходимо добавить:

<form id="form1" runat="server">
</form>

и заменить

  Controls.Add(b);

С

  form1.Controls.Add(b);
0 голосов
/ 15 марта 2012

Используйте Page_Init вместо OnInit.

Вызов base.OnInit перед созданием кнопок также может работать.

0 голосов
/ 15 марта 2012

попробуйте

for (int i = 0; i < 10; i = i + 1)
{
    Button b = new Button();
    b.ID = "Button" + i;
    b.Click += new EventHandler(b_Click); 
    Controls.Add(b);
}

void b_Click(object sender, EventArgs e)
{
    //some code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...