2008-03-05
一个很适用的功能,附源代码(ASP.NET)
在学习ASP.NET的时候,由于ASP.NET是个事件驱动的语言,即事件是靠后台来实现的,可能大家遇见过一个这样的问题:
比如一个BUTTON,是服务器端控件,当要在执行操作前(比如删除数据、更新数据等),要先弹出一个对话框:比如“是否要删除数据”等之类的描述,在JSP中这个是很好实现的,但是在ASP.NET后台是不好实现的,只有通过事件回调到客户端,ASP.NET有些很好的方法:Page.RegisterStart或Page.RegisterClientScriptBlock
它的后台事件是:
private void Button_Click(object sender, System.EventArgs e)
{
if(弹出框(是否要删除数据))
{
确定删除代码 }
else
{
不删除代码
}
}
用这样的方法是实现不了的
所以我想了一个解决方案:
页面上放2个按钮,第一个用来实现(弹出对话框),第二个用来实现操作
当第一个选中了对话框中的“确定”后,程序就执行第二个按钮的事件。否则不执行操作。
代码如下:
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 HTConfirm
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button2;
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.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
Response.Write("删除了!");
}
#region//确认对话框
/// <summary>
/// 服务器端弹出confirm对话框
/// </summary>
/// <param name="str_Message">提示信息,例子:"您是否确认删除!"</param>
/// <param name="btn">隐藏Botton按钮Id值,比如:btn_Flow</param>
/// <param name="page">Page类</param>
public void Confirm(string str_Message,string btn,Page page)
{
page.RegisterStartupScript("","<script> if (confirm('"+str_Message+"')==true){document.forms(0)."+btn.Trim()+".click();}</script>");
}
#endregion
private void Button2_Click(object sender, System.EventArgs e)
{
this.Confirm("要删除吗?","Button1",this);
}
}
}
比如一个BUTTON,是服务器端控件,当要在执行操作前(比如删除数据、更新数据等),要先弹出一个对话框:比如“是否要删除数据”等之类的描述,在JSP中这个是很好实现的,但是在ASP.NET后台是不好实现的,只有通过事件回调到客户端,ASP.NET有些很好的方法:Page.RegisterStart或Page.RegisterClientScriptBlock
它的后台事件是:
private void Button_Click(object sender, System.EventArgs e)
{
if(弹出框(是否要删除数据))
{
确定删除代码 }
else
{
不删除代码
}
}
用这样的方法是实现不了的
所以我想了一个解决方案:
页面上放2个按钮,第一个用来实现(弹出对话框),第二个用来实现操作
当第一个选中了对话框中的“确定”后,程序就执行第二个按钮的事件。否则不执行操作。
代码如下:
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 HTConfirm
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button2;
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.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
Response.Write("删除了!");
}
#region//确认对话框
/// <summary>
/// 服务器端弹出confirm对话框
/// </summary>
/// <param name="str_Message">提示信息,例子:"您是否确认删除!"</param>
/// <param name="btn">隐藏Botton按钮Id值,比如:btn_Flow</param>
/// <param name="page">Page类</param>
public void Confirm(string str_Message,string btn,Page page)
{
page.RegisterStartupScript("","<script> if (confirm('"+str_Message+"')==true){document.forms(0)."+btn.Trim()+".click();}</script>");
}
#endregion
private void Button2_Click(object sender, System.EventArgs e)
{
this.Confirm("要删除吗?","Button1",this);
}
}
}
评论
jzhua2006
2008-03-07
我试一试哦!哈哈!谢谢流言哦!
yiketudou
2008-03-06
最简方法:页面的button外面加一个“span”标签即可:<span onclick="return confirm('确实要删除?')">此处服务器button</span>
发表评论
- 浏览: 6975 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
老婆2
共 7 张
共 7 张
最近加入圈子
最新评论
-
今天要做公司内部的一个Or ...
整理成word文档 下来看看 这样看累的 内容挺好的
-- by antonyup_2006 -
高兴呀!得到华为的录取通 ...
你们也太不了解华为了!一个很好的企业,公司很人性化,还有手把手的导师制度。同时业 ...
-- by jzhua2006 -
高兴呀!得到华为的录取通 ...
2个月了,还没有si?
-- by testlga -
公司不能上网,现在就很少 ...
紧张不?一周多久休息啊
-- by flameanger -
公司不能上网,现在就很少 ...
在哪上班呢?
-- by flameanger






评论排行榜