在ASP.NET中动态添加用户控件

时间:2012-03-15 10:37:37

标签: c# asp.net events dynamic user-controls

我知道这个问题被多次询问,但我的问题仍未解决,

我正在尝试迭代对象列表,并用该对象填充模板“用户控件”, 比如搜索结果列表。

在这些用户控件中有一个linkBut​​ton应该重定向到另一个页面, 当我点击那个链接按钮没有任何反应时,我用Google搜索但没有令人满意的答案。

这里是代码,我将使用按钮而不是用户控件进行说明:

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 个答案:

答案 0 :(得分:2)

该按钮永远不会触发,因为它不是服务器表单控件的子节点。

如果还没有表单控件,则需要添加它:

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

并替换

  Controls.Add(b);

使用

  form1.Controls.Add(b);

答案 1 :(得分:0)

试试这个

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
}

答案 2 :(得分:0)

使用Page_Init而不是OnInit。

在创建按钮之前调用base.OnInit也可能有效。