using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace WebApplication1
{
/// <summary>
/// index 的摘要说明。
/// </summary>
public class index : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面

} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e)
{
this.Button1.Attributes.Add("onclick","window.close()");
}
}
}
在生成的页面上点击这个button,要第二次才会弹出是否关闭的对话框!但如果
this.Button1.Attributes.Add("onclick","window.close()");
这句话写在page_load里每次点击都会弹出对话框这是为什么

解决方案 »

  1.   

    this.Button1.Attributes.Add("onclick","window.close()");
    这句话的意思是给Button1加个属性名为onclick,动作是window.close(),这些是在page_load中发生的,那传给客户端的页面中的Button的属性里就会多出一条onclick='window.close()',你点击后,客户端就直接用javascript代码执行了;
    而如果你把它在Button事件中,那就只会在你点击时,Butto1的客户端代码属性里加上onclick='window.close()',第二次点击,此代码才能真正得到执行;
      

  2.   

    如同楼上的大大说的,你对web的运行方式还有服务端动态加入js代码没有了解透!
      

  3.   

    if not me.ispostback 
    加入这个
    看看
      

  4.   

    LZ,看来你这个问题没理解,上次我也回了你的帖。
    建议了解页面的生存周期。
    你给按钮加Attributes是发生在什么时候?是在加载页面与页面呈现在你面前之前,页面已经生成好了,当你点按钮的时候(页面之前已生成完毕)再给按钮加Attributes是没有理由的,也是不可能成功的。