按钮单击事件不在ASP .Net中的使用控件内触发

Bat*_*ana 4 c# asp.net

我正在开发一个asp网页,其中我有一个下拉组合框和一个下方的占位符.当用户从下拉组合框中选择项目时,对服务器端进行回发,并且服务器将asp用户控件加载到该父页面中的占位符.到目前为止,一切都很好.

在用户控件中,我有一个按钮,后面的用户控制代码被实现来处理按钮点击事件.问题是,当我单击此按钮时,我可以看到回发被发送到服务器端(即在调试模式下调用父页面Page_Load()),但是用户控件的Page_Load()或按钮单击事件处理程序都是没有被调用.

请帮忙..

一些额外的信息,

  1. 我的父页面不是asp母版页.只是一个简单的asp页面.
  2. 我正在使用VS2008和.Net 3.5 SP1和C#.

Val*_*mas 7

您需要确保UserControl存在,以便在重建viewstate时触发按钮单击事件.

在Page_Load中加载UserControl将首次运行.单击按钮并发生post_back时,尚未发生Page_Load.这意味着UserControl将不存在,这意味着该事件无需连接备份按钮.因此,带有按钮的UserControl无法连接到click事件,并且click事件不会触发.

建议您在此事件中加载您的用户控件.

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    //-- Create your controls here
}
Run Code Online (Sandbox Code Playgroud)

尝试沙盒测试.在page_load中,在Page_Load中动态创建一个带有单击事件的按钮.您将看到click事件不会触发.现在将按钮移动到OnLoad事件.点击事件将触发.另请注意,click事件将发生在Page_Load事件之前.进一步证明按钮在正确的时间不存在.

另一个想法......

您正在按钮事件发生之前在页面上重新加载usercontrol.确保LoadControl方法位于If块内

if (!IsPostBack)
{
    //load usercontrol
}
Run Code Online (Sandbox Code Playgroud)