ASP.NET 确认框问题,急!!!

evien007 2010-01-21 11:14:38
//维护查询
protected void btnSelWeiHu_Click(object sender, EventArgs e)
{
if (this.RadioButtonList2.SelectedValue == "1")
{
//...选择1时执行部分
}
else if (this.RadioButtonList2.SelectedValue == "2")
{
//....选择2时执行部分
}
else //选择3时要求弹出确定,取消的提示框
{
string strMsg = "范围选择为全部,可能数据量较大会影响速度,您确定查询吗?";
System.Web.HttpContext.Current.Response.Write("<Script Language='JavaScript'>if ( window.confirm ('" + strMsg + "')==false) {return};</script>");
//...确认后执行部分
}

}


提示框不显示,这么写不对吗?请教高人
...全文
462 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Adechen 2010-01-21
  • 打赏
  • 举报
回复
用ClientScript.RegisterStartUpScript试下
chen_ya_ping 2010-01-21
  • 打赏
  • 举报
回复
我相信在一般的三层项目中都是有一个APPUtility.cs文件的,这个我我想里面都是给你封装好的东西让你调用。
fangyuantdy 2010-01-21
  • 打赏
  • 举报
回复
这样吧,我写个大概,然后自己调试下
在btnSelWeiHu按钮OnClientClick属性设置为
"if(document.getElementById('<%=RadioButtonList2.ClientID %>').selectValue==3){return confirm('范围选择为全部,可能数据量较大会影响速度,您确定查询吗?');}"
具体RadioButtonList2在客户端是否有selectValue属性,待我调查一下,等会告诉你
sywcf 2010-01-21
  • 打赏
  • 举报
回复
首先,你得保证“//...确认后执行部分 ”这个是本方法的最后一段代码,否则会向下执行
然后,最好把js提出去写,要不然看着太乱,在页面中放一个隐藏域hidID,如果js返回的是true,可以
hidID = "1" ,否则hidID = "0";js最后加上Form1.submit();
最后,在aspx.cs的page_load中加上判断
if(hidID == "1")
{
“//...确认后执行部分 ”
}

当然这种方法看起来不是很好,但是肯定能解决你的问题(我经常这么做),希望楼下有高招,学习
三碗猪脚 2010-01-21
  • 打赏
  • 举报
回复
//JS
function chk()
{
//判断选的中项数,如果是第三项,则调用confirm函数
}

在后台,page_load加载中添另
if(!isPostBack)
{
this.btnSelWeiHu.Attributes.Add("onclick","chk();");
}
fengyunshier 2010-01-21
  • 打赏
  • 举报
回复
这样的确认是不能继续执行的,确认脚本只是在客户端执行,不会发回服务器。
可以这样,在确认之后在执行一个button的事件,在这个事件里再执行要做的事件
System.Web.HttpContext.Current.Response.Write(" <Script Language='JavaScript'>if ( window.confirm ('" + strMsg + "')) {document.getElementById('buttonID').click();}return false; </script>");
evien007 2010-01-21
  • 打赏
  • 举报
回复
7楼能给个例子吗
mngzilin 2010-01-21
  • 打赏
  • 举报
回复
不可能执行的
mngzilin 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 evien007 的回复:]
  //维护查询
               string strMsg = "范围选择为全部,可能数据量较大会影响速度,您确定查询吗?";
            System.Web.HttpContext.Current.Response.Write(" <Script Language='JavaScript'>if ( window.confirm ('" + strMsg + "')==false) {return}; </script>");
            //...确认后执行部分
        }

    }


提示框不显示,这么写不对吗?请教高人

[/Quote]

你这种写法是错误的,因为Response.Write得js脚本要到客户端才能执行,而你在输出这段脚本后直接执行下面的部分,js脚本还没有发送到客户端,是本可能执行的。要在客户端用js脚本判断。
evien007 2010-01-21
  • 打赏
  • 举报
回复
我改成
System.Web.HttpContext.Current.Response.Write("<Script Language='JavaScript'> return window.confirm('" + strMsg + "');</script>");

还是不行啊...郁闷了
liuzhanjun11 2010-01-21
  • 打赏
  • 举报
回复

protected void btnSelWeiHu_Click(object sender, EventArgs e)
{
if (this.RadioButtonList2.SelectedValue == "1")
{
//...选择1时执行部分
}
else if (this.RadioButtonList2.SelectedValue == "2")
{
//....选择2时执行部分
}
else //选择3时要求弹出确定,取消的提示框
{
string strMsg = "范围选择为全部,可能数据量较大会影响速度,您确定查询吗?";
this.btnSelWeiHu.Attributes.Add("onclick", "return confirm('"+strMsg +"')"); //...确认后执行部分
}

}
fangyuantdy 2010-01-21
  • 打赏
  • 举报
回复
想要停止执行就得在客户端检查是否选择了3,是的话弹出确认框
fangyuantdy 2010-01-21
  • 打赏
  • 举报
回复
一般写确认框是这么写的
return confirm("确认***操作吗?")
huwei12345 2010-01-21
  • 打赏
  • 举报
回复
这样做 根本不能 然他停止查询的,下面的代码不管 点 确定还是取消 还是会执行
LoveLife_Go 2010-01-21
  • 打赏
  • 举报
回复
你先确认你走到else下面的部分了吗?
你设断点跟一下
我试了你的语句,把return去掉就可以了
evien007 2010-01-21
  • 打赏
  • 举报
回复
感谢大家,搞定了16楼和18楼的方法都可以,结帖
FantasyFreed 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 xray2005 的回复:]
这样是对的:
如下:
HTML code<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><body><formid="form1" runat="server"><asp:ButtonID="btnSelWeiHu" runat="server" Text="Button" OnClick="btnSelWeiHu_Click" OnClientClick="return Check();"/></ContentTemplate></asp:UpdatePanel><asp:RadioButtonListID="RadioButtonList2" runat="server"><asp:ListItemText="1" Value="1"></asp:ListItem><asp:ListItemText="2" Value="2"></asp:ListItem><asp:ListItemText="3" Value="3"></asp:ListItem></asp:RadioButtonList><scripttype="text/javascript">function Check() {var rd= document.getElementById("<%=RadioButtonList2.ClientID %>");var len= rd.rows.length;for (var i=0; i< len; i++) {var ss= rd.id+"_"+ i;var aa= document.getElementById(ss).value;var bb= document.getElementById(ss);if (aa==3&& document.getElementById(ss).checked)//注意checked不能写成Checked,要不然不成功 {return confirm("范围选择为全部,可能数据量较大会影响速度,您确定查询吗?");

}

}returntrue;
}</script></form></body></html>

后台代码:
C# codeprotectedvoid btnSelWeiHu_Click(object sender, EventArgs e)
{if (this.RadioButtonList2.SelectedValue=="1")
{//...选择1时执行部分 }elseif (this.RadioButtonList2.SelectedValue=="2")
{//....选择2时执行部分 }else
{//选择3执行的部分 }

}
[/Quote]

正解~~~~
xray2005 2010-01-21
  • 打赏
  • 举报
回复
这样是对的:
如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="btnSelWeiHu" runat="server" Text="Button" OnClick="btnSelWeiHu_Click" OnClientClick="return Check();" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:RadioButtonList ID="RadioButtonList2" runat="server">
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2"></asp:ListItem>
<asp:ListItem Text="3" Value="3"></asp:ListItem>
</asp:RadioButtonList>

<script type="text/javascript">
function Check() {

var rd = document.getElementById("<%=RadioButtonList2.ClientID %>");
var len = rd.rows.length;

for (var i = 0; i < len; i++) {
var ss = rd.id + "_" + i;

var aa = document.getElementById(ss).value;
var bb = document.getElementById(ss);
if (aa == 3 && document.getElementById(ss).checked) //注意checked不能写成Checked,要不然不成功
{
return confirm("范围选择为全部,可能数据量较大会影响速度,您确定查询吗?");

}

}
return true;
}

</script>
</form>
</body>
</html>



后台代码:

protected void btnSelWeiHu_Click(object sender, EventArgs e)
{
if (this.RadioButtonList2.SelectedValue == "1")
{
//...选择1时执行部分
}
else if (this.RadioButtonList2.SelectedValue == "2")
{
//....选择2时执行部分
}
else
{
//选择3执行的部分
}

}

fangyuantdy 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 mzmxchenweij 的回复:]
用ClientScript.RegisterStartUpScript试下
[/Quote]按钮已经走到服务器端了,不可能实现的,只有在客户端弹确认框才能不执行服务器代码
fangyuantdy 2010-01-21
  • 打赏
  • 举报
回复
搞定了,
protected void Page_Load(object sender, EventArgs e)
{
btnSelect.OnClientClick = "if(document.getElementById('"+RadioButtonList1.ClientID+"'+'_2').checked){return confirm('OK');}";
}

btnSelect就是那个查询按钮,RadioButtonList1对应你的RadioButtonList2,另外,
'_2'
,是对应你的Radio所在索引,如果是第三个就是2,第四个就是3,索引从零开始
应为RadioButtonList生成到客户端是一个个的Radio,我是根据生成的代码看出来Radio的id是RadioButtonList的id再加上"_索引号"

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧