2014-02-13 228 views
0

我在代码中创建的背后,像这样一个按钮:asp.net事件处理程序dynamicallycreated按钮

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 
     } 

的问题是,我永远不能得到从事件方法执行代码。

这是为什么?

+0

何时调用Somethod?应该在PreInit事件中添加Dinamic控件 – Oscar

回答

2

您是否将控件添加到preinit事件处理程序中的页面? Check

+0

它被加载到Page_Load方法中并且在一个'if(!IsPostBack)'中加载 –

+0

确定将它加载到Pre_Init中可以修复问题。谢谢。 –

+0

还有一个小问题,如果我想在按条件创建的其他控件之后添加按钮控件,该怎么办?这意味着它们可能存在于pre_init –

0

请在页面初始化事件处理程序中添加动态控件,以便适当地触发ViewState和事件。

1

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

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..."); 
    } 
+0

对不起,我将它添加到面板。编辑上面的代码。 –