protected void Button2_Click(object sender, EventArgs e)
    { 
        Button add1 = new Button();
        add1.ID = "add1" + Table1.Rows.Count;
        add1.Text = "添加";
        add1.Click += new EventHandler(add_Click);
        。
         table1.Controls.Add(add1);
    }
    protected void add_Click(object sender, EventArgs e)
    {
    ...............
    }原来我是这样写的,可是没有执行方法add_Click。   为add1添加一个单击事件 怎么添加啊??

解决方案 »

  1.   

    建议你用  异步的方式javascript+ajax 很容易就能实现这个功能如果你用服务器控件  你动态生成的按扭事件由于回传会消失。
    我不太常用服务器控件  不太清楚如何实现  但以前看过类似的问题  看看VIWSTATE
      

  2.   

    根本不是这个机制。关于动态创建控件,过去说的很多,你google一下。简单提示一下:你的按钮应该在load事件处理中“重建”,确保id和上一次输出时完全一样,否则页面实例化时是没有这个按钮的。这需要根据asp.net页面生命周期,了解IPostBackDataHandler接口何时被使用,IPostBackEventHandler接口何时触发。
      

  3.   

    你需要使用ViewState来记录按钮增加的信息,并且在page_load中按照信息重建按钮。
      

  4.   

    ViewState  这个东西我已经写了
      

  5.   

    我过去也建议过无数次:如何写检测动态控件的最基本测试用例。你可以在页面上用鼠标拖入一个button,然后双击创建其后台click事件,但是无需写入任何代码。这个测试用例就创建完成了。在你开发“动态生成控件”的程序时,调试时时不时地按一下这个按钮,如果按这个按钮之后你的“动态控件”乱了,就证明你的看似正常的动态控件其实是不正常的。你不能用自己的动态控件来测试它自己的状态是否管理起来,必须用外部的黑箱来测试,要多做测试而不是多做调试。