【问题标题】:asp.net event handler for dynamicallycreated button用于动态创建按钮的 asp.net 事件处理程序
【发布时间】:2014-03-12 11:26:13
【问题描述】:

我在后面的代码中创建了一个按钮,如下所示:

some method {
    Button btnExportToExcel = new Button();
    btnExportToExcel.Text = "Export To Excel";
    btnExportToExcel.Click += new EventHandler(btnExportToExcel_Click);
    pnlListView.Controls.Add(btnExportToExcel);
}

protected void btnExportToExcel_Click(object sender, EventArgs e)
        {
            //do something
        }

问题是我无法从事件方法中执行代码。

这是为什么呢?

【问题讨论】:

  • 什么时候调用 Somethod?应在 PreInit 事件中添加动态控件

标签: c# asp.net button dynamic event-handling


【解决方案1】:

您是否在 preinit 事件处理程序中向页面添加控件? Check

【讨论】:

  • 它在 Page_Load 方法中和 if (!IsPostBack) 状态中加载
  • 好的,在 Pre_Init 中加载它可以解决问题。谢谢。
  • 还有一个小问题,如果我想在其他有条件创建的控件之后添加按钮控件怎么办?这意味着它们可能存在于 pre_init
【解决方案2】:

您必须将按钮添加到任何控制器。

 protected void Page_Load(object sender, EventArgs e)
    {
        Button btnExportToExcel = new Button();
        btnExportToExcel.Text = "Export To Excel";
        btnExportToExcel.Click += new EventHandler(btnExportToExcel_Click);
        //this is add the button to the form1
        this.form1.Controls.Add(btnExportToExcel);
    }

    void btnExportToExcel_Click(object sender, EventArgs e)
    {
        //...
        Response.Write("click me...");
    }

【讨论】:

  • 抱歉,我将其添加到面板中。编辑了上面的代码。
【解决方案3】:

请在页面的 Init 事件处理程序中添加动态控件,以便正确触发 ViewState 和事件。

【讨论】:

    猜你喜欢
    • 2017-07-29
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2018-04-23
    相关资源
    最近更新 更多