none
Click += new EventHandler 在page_load里不起作用? RRS feed

  • 问题

  • 放在OnInit或者page_load里好像都没反应 
    protected void Page_Load(object sender, EventArgs e)
     {
         if (!IsPostBack)
            {

                 Button5.Click += new EventHandler(Button5_Click);
           }



    protected void Button5_Click(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "", "<script language='javascript'>alert('ok')</script>", false);
        }
    2009年12月10日 8:55

答案

  • 刚才看了一下,用ScriptManager那段,在页面生成后什么都不干,看网页源码,并没有那两个alert的句子,点击了button1后再去看源码,就可以看到在最后面有那两句。也就是说,Button1.Click += new EventHandler(Button1_Click); 这句根本就没有执行?跟踪了一下,在page_load那里单步执行确实有指向这句,但是没有进去。
    在Button1_Click里添加了response.write("你好!");后,第一次load并没有出现,但是单击button1后则出现了两个


    你误解了事件用法了 以为pageload会执行这个事件 大错了 那是点击事件 pageload执行这个事件只是和控件注册事件! 不是执行点击事件   
    • 已标记为答案 scate233 2009年12月14日 7:02
    2009年12月12日 8:08

全部回复

  • 去掉if (!IsPostBack)
    2009年12月10日 9:01
  • 刚才放到了IsPostBack的外面也没反应
    2009年12月10日 9:21
  • 这个应该在Page.Init事件中添加相应的控件的事件才对吧!
    2009年12月10日 9:33
  • 我试着放在 override protected void OnInit(EventArgs e) 里
    也没反应

    2009年12月10日 9:48
  • 检查一下@page标识有什么问题

    2009年12月10日 13:29
  •  Page Title="" Language="C#" MasterPageFile="~/MasterForm.master" AutoEventWireup="true" CodeFile="FeederLine.aspx.cs" Inherits="FeederLine"  Culture="en-GB"

    在页面直接按按钮倒是可以
    2009年12月11日 1:06
  • 你好,

    我已经测试过了,不存在你说的这种情况。
    直接如mldark 所说的那样就可以了。

    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Button1.Click += new EventHandler(Button1_Click);
    
        }
    
        void Button1_Click(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this.Page,typeof(string),"TEST","alert('This is a test!');",true); ;
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" />
        </div>
        </form>
    </body>
    </html>
    

    Microsoft Online Community Support
    2009年12月11日 3:47
  • 楼上那段完整复制粘贴,在我这里没有任何反应


    下面这段也没有任何反应
    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public partial class Default12 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += new EventHandler(Button1_Click);

        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this.Page, typeof(string), "TEST", "alert('This is a test!');", true);
            ScriptManager.RegisterStartupScript(this, this.GetType(), "", "<script language='javascript'>alert('ok')</script>", false);
        }
    }

    2009年12月11日 9:43

  • 很奇怪,上面代码在我的机子上是测试过的。是不是你做了其它方面的配置等。

    你新建一个项目,然后把我上面的代码拷进去试试。
    Microsoft Online Community Support
    2009年12月11日 9:49
  • 我贴出来的那段也有反应吗?

    我是新建带ajax的网站这样建立的
    2009年12月12日 2:03
  • 试试:在Button1_Click事件里,不用ScriptManager,就用response.write("你好!");
    努力!奋斗
    2009年12月12日 2:10
  • 也不行。
    页面生成后单击button1就有反应
    2009年12月12日 2:19
  • 刚才看了一下,用ScriptManager那段,在页面生成后什么都不干,看网页源码,并没有那两个alert的句子,点击了button1后再去看源码,就可以看到在最后面有那两句。也就是说,Button1.Click += new EventHandler(Button1_Click); 这句根本就没有执行?跟踪了一下,在page_load那里单步执行确实有指向这句,但是没有进去。
    在Button1_Click里添加了response.write("你好!");后,第一次load并没有出现,但是单击button1后则出现了两个

    2009年12月12日 2:27
  • 可能是你的配置有问题,正在情况下不会发生你这种情况。
    努力!奋斗
    2009年12月12日 2:46
  • 刚才看了一下,用ScriptManager那段,在页面生成后什么都不干,看网页源码,并没有那两个alert的句子,点击了button1后再去看源码,就可以看到在最后面有那两句。也就是说,Button1.Click += new EventHandler(Button1_Click); 这句根本就没有执行?跟踪了一下,在page_load那里单步执行确实有指向这句,但是没有进去。
    在Button1_Click里添加了response.write("你好!");后,第一次load并没有出现,但是单击button1后则出现了两个


    你误解了事件用法了 以为pageload会执行这个事件 大错了 那是点击事件 pageload执行这个事件只是和控件注册事件! 不是执行点击事件   
    • 已标记为答案 scate233 2009年12月14日 7:02
    2009年12月12日 8:08