• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

急!如何在执行中弹出一个对话框,根据“是”或“否”做不同的处理?

nnlyc 2004-10-26 09:40:52
RT,如果“是”,就打开一个页面a.aspx,“否”就继续执行
...全文
174 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
105910556 2004-10-26
作者:活靶子[原创] 出处:AspxBoy.Com
经常在论坛里看到类似这样的问题:“…如何在点击删除按钮的时候弹出个确认删除对话框”。

下面我们来自己写一个这样的自定义Web服务器控件!

思路如下:

继承System.Web.UI.WebControls.Button控件

增加一个属性“ConfirmMessage”来表示弹出确认框上面的提示信息。

在服务器控件呈现在页面之前把一段javascript写到页面

内容如下:

<script language="JavaScript">

<!--

function _doAspxBoyConfirm()

{

return confirm("你确认删除/保存吗??")

}

//-->

</script>

查一下msdn中对于Control.OnPreRender 方法的描述

可以得到“此方法通知服务器控件在保存视图状态和呈现内容之前,执行任何必要的预呈现步骤”.

所以我们只要在OnPreRender方法内 用Page.RegisterClientScriptBlock把这段javascript发送到客户端,并且给Button. Attributes属性内添加一个“onclick”的客户端属性对应值为: "return _doAspxBoyConfirm()”.

详细情况可以查阅

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemwebuiwebcontrolswebcontrolclassattributestopic.htm

这样一个具有ConFirm功能的Button就基本上建立起来了。

新建一个测试该控件的工程

在工具箱上点右键选择“添加/移除项”,点击浏览选择编译好的dll文件,点击确定,你会发现ConFirmButton已经添加到工具箱内了

将其托到一个Aspx页面内 在属性设置内给ConfirmMessage值为你要的弹出框内容比如“确定删除吗?”,按F5运行。

当点该按钮时会弹出一个confirm对话框询问“确定删除吗?”,如果点击确定则执行button的Button_Click事件,如果点击取消则不执行。

你可以查看他生成的html代码,以加深对该控件工作原理的理解

完整的代码如下:

using System;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

using System.Text;



namespace AspxBoy.Com.ConfirmButton

{

/// <summary>

/// Button点击时会弹出一个对话框要求确认

/// </summary>

public class ConfirmButton : System.Web.UI.WebControls.Button

{

private string _confirmMessage;

/// <summary>

/// 当客户端点击此Button时弹出的提示消息筐的内容

/// </summary>

public string ConfirmMessage

{

get

{

return _confirmMessage;

}



set

{

_confirmMessage = value;

}

}



protected override void OnPreRender(System.EventArgs e)

{

StringBuilder sb = new StringBuilder();

sb.Append("<script language=\"JavaScript\">");

sb.Append(System.Environment.NewLine);

sb.Append("<!--");

sb.Append(System.Environment.NewLine);

sb.Append("/*--------------------------------------------");

sb.Append(System.Environment.NewLine);

sb.Append("ControlName:\t\tAspxBoy.Com.ConfirmButton");

sb.Append(System.Environment.NewLine);

sb.Append("AuthorName:\t\t\tHuobazi,WuMeibo");

sb.Append(System.Environment.NewLine);

sb.Append("CopyRight:\t\t\twww.AspxBoy.Com");

sb.Append(System.Environment.NewLine);

sb.Append("---------------------------------------------*/");

sb.Append(System.Environment.NewLine);

sb.Append("function _doAspxBoyConfirm()");

sb.Append(System.Environment.NewLine);

sb.Append("{");

sb.Append(System.Environment.NewLine);

sb.Append("return confirm(\"");

sb.Append(ConfirmMessage);

sb.Append("\")");

sb.Append(System.Environment.NewLine);

sb.Append("}");

sb.Append(System.Environment.NewLine);

sb.Append("//-->");

sb.Append("</script>");

Page.RegisterClientScriptBlock("_doAspxBoyConfirm",sb.ToString());

this.Attributes.Add("onclick","return _doAspxBoyConfirm()");

base.OnPreRender(e);

}

public override void RenderBeginTag(HtmlTextWriter writer)

{

writer.WriteLine();

writer.Write("<!-------------------");

writer.Write("AspxBoy.Com.ConfirmButton Start");

writer.Write("\tAuthorName: \tHuobazi");

writer.WriteLine(" --------------------->");

writer.Write("<!-------------------- ");

writer.Write("Copyright:2004 Huobazi(www.AspxBoy.com)");

writer.Write(" ---------------------");

writer.WriteLine(">");

base.RenderBeginTag(writer);

}

public override void RenderEndTag(HtmlTextWriter writer)

{

base.RenderEndTag(writer);

writer.WriteLine();

writer.Write("<!------------------------------- ");

writer.Write("AspxBoy.Com.ConfirmButton End");

writer.Write(" --------------------------------");

writer.WriteLine(">");

writer.WriteLine();

}

}

}


回复
wings2001 2004-10-26
private void Button1_Click(object sender, System.EventArgs e)
{
this.Button1.Attributes.Add("onclick","return confirm('yes or no')");
//用户选择“确定”后执行的代码
}

如果用户选择“取消”,则函数返回,不做任何处理

回复
uffeng 2004-10-26
偶想!!楼主的意思!!不是各位想象那样!
弹出对话框 以后 !
是 和 否 执行不同的服务器代码!
目前位置 好像是比较难解决
只有用 模式窗体的 returnValue 来处理!!
回复
vzxq 2004-10-26
Response.Write("<script>if(window.confirm('adfasdf')){ window.location.href=\"WebForm1.aspx\"}</script>");
这样不行吗?
回复
nnlyc 2004-10-26
先试试楼上的方法
同时谢谢 zhy2003119(冲浪新手),我的对话框是webform的,不是winform的
回复
老鼠爱上猫 2004-10-26
先判断textbox.text是否为空,为空 时,提示错误信息,放在 字符串 strinfo 里,不为空时 判断 输入的是不是 数据,不是数字,提示错误, 弹出 错误信息,只哟最后一句,MessageBox.Show(this,strInfo,"错误提示",MessageBoxButtons.OK,MessageBoxIcon.Error);你可以查下MSDN ,MessageBox.Show,有好多种 样式!
回复
老鼠爱上猫 2004-10-26
private bool CheckData()
{
string strInfo="";

if(this.txtGardenNO.Text=="")
{
strInfo="请输入园区编号\n";
}
else
{
try
{
Decimal.Parse( this.txtGardenNO.Text.Trim().ToString() );
}
catch
{
strInfo="园区编号输入不正确\n";
}
}

if(this.txtGardenNa.Text=="")
{
strInfo="请输入园区名称\n";
}


if(this.txtVirArea.Text=="")
{
strInfo="请输入绿化面积\n";
}
else
{
try
{
//验证txtbox里输入的如果不是数字,则提示错误!
Decimal.Parse( this.txtVirArea.Text.Trim().ToString() );
}
catch
{
strInfo="绿化面积输入不正确\n";
}
}

if(this.txtOderNo.Text=="")
{
strInfo="请输入序号\n";
}
if(strInfo=="")
{
return true;
}
else
{
MessageBox.Show(this,strInfo,"错误提示",
MessageBoxButtons.OK,MessageBoxIcon.Error);
return false;
}
}

这是我写的一个检验窗体输入,提示错误的例子的一小段,希望对你有点帮助!C# 的
回复
tianjue0921 2004-10-26
Response.Write("<script>if(window.confirm('adfasdf')){ window.location.href=\"WebForm1.aspx\"}</script>");
回复
YLENTER 2004-10-26
private void LinkButton1_Click(object sender, System.EventArgs e)
{
Response.Write("<script>if(window.confirm('是否')){ window.location.href=\"WebForm1.aspx\"}</script>");

}
回复
asuntea 2004-10-26
学习
回复
monking007 2004-10-26
可以参考
http://msdn.microsoft.com/asp.net/using/building/web/default.aspx?pull=/library/en-us/dnaspp/html/ClientSideScript.asp
回复
xxdneu 2004-10-26
if(successful)
{
if(!Page.IsStartupScriptRegisted("sk"))
Page.RegisterStartupScript("sk", "<script language='javascript'>if(confirm('ddddd')) open('XXX.aspx');</script>");
}
回复
liuzxit 2004-10-26
//c#加js腳本
oButton.Attributes.Add("onclick","return f();");

//js函數
function f()
{
if (confirm('提示内容')==1)
{
window.open('a.aspx','','');
return false;
}
return true;
}
回复
zyrlxy 2004-10-26
同意楼上。如果在服务器端执行就要用Reponse.write("<script language='javascript'>程序名</script>")
回复
nnlyc 2004-10-26
我是在点击按钮,先进行一些数据处理以后,才根据处理结果弹出对话框的,有没有cs代码加js脚本的方法?
回复
qiangsheng 2004-10-26
用javascript
if (confirm('提示内容')==1)
{
window.open('a.aspx','','');
}
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-10-26 09:40
社区公告
暂无公告