Asp.net 运行时创建的接线按钮

Asp.net 运行时创建的接线按钮,asp.net,Asp.net,我正在根据一些运行时变量的值创建一些按钮,我甚至不知道有多少个 我的按钮代码如下: Button cancel = new Button(); cancel.Text = "Cancel"; cancel.ID = "cancelEnrollmentForStudent" + zapsanePredmetyList.ElementAt(i).ID.ToString() + "-" + i ; cancel.Click +=

我正在根据一些运行时变量的值创建一些按钮,我甚至不知道有多少个

我的按钮代码如下:

Button cancel = new Button();
            cancel.Text = "Cancel";
            cancel.ID = "cancelEnrollmentForStudent" + zapsanePredmetyList.ElementAt(i).ID.ToString() + "-" + i ;
            cancel.Click += new EventHandler(cancelEnrollment);
            string toCancel = selectedSubject.SelectedValue + ";" + studentToEnroll.SelectedValue;
            cancel.CommandArgument = toCancel;
而click方法的代码是

protected void cancelEnrollment(object sender, EventArgs e)
    {
        //do something when button clicked. 
        Button sourceButton = (Button)sender;
        string[] data = sourceButton.CommandArgument.Split(';');
    }
但是,单击按钮时,单击方法不会启动。我想这与我在运行时构建按钮这一事实有关。是否有人建议如何激发这种方法

谢谢,
Ondrej

您必须重写OnInit,然后在OnInit方法中添加代码

protected override void OnInit(EventArgs e) 
{
    base.OnInit(e);
    Button btn = new Button();
    btn.ID = "btn1";
    btn.Text = "Button1";   
    btn.Click += new EventHandler(btn_Click);
    this.form1.Controls.Add(btn);
}

void btn_Click(object sender, EventArgs e)
{     
    Button bt = (Button)sender;
    bt.Text = "Changed";        
}

谢谢但似乎我做错了什么-当我向页面添加覆盖代码时,它会导致其他服务器端表单元素的编译问题,因此代码无法编译。编译器错误消息:CS1061:“ASP.subjects\u choosesubject\u aspx”不包含“studentToEnroll\u DataBound”的定义,并且没有扩展方法“studentToEnroll\u DataBound”接受类型的第一个参数找不到“ASP.subjects\u choosesubject\u aspx”是否缺少using指令或程序集引用?我只是复制粘贴了你的代码,但将oninit改为调用非btn_click,而是我自己的方法o唯一的区别是btn.click+=neweventhandlerconEnrollment;检查代码文件中是否存在studentToEnroll_数据绑定,如果存在,则检查它有什么参数。为了测试动态控件添加和事件绑定,您可以创建一个新页面进行测试,然后修改所需页面。我想它确实存在于某个地方,但我没有手动创建它—它是一个可视化添加的dropdownlist,带有可视化配置的LinqToSQL数据源。我需要手动将其重写到代码中吗?是的,您也可以撤消代码,使其工作正常