【提问】window.showModalDialog刷新父窗口问题

xupeihuagudulei 2010-11-04 10:55:36
父页面代码

//写在pageload里
int i = 1;
if (i == 1)
{
ClientScript.RegisterStartupScript(this.GetType(), "open", "<script type=\"text/javascript\"> var str = document.getElementById(\"hid\"); alert(str.value=window.showModalDialog(\"b.aspx?UserName=123\"));</script>");
}

if (hid.Value == "1")
{
Response.Write("b.aspx");
}


模态框弹出的页面代码(子窗口):

protected void Page_Load(object sender, EventArgs e)
{
string userName = Request.QueryString["UserName"].ToString();
}

protected void Button1_Click(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.GetType(), "open", "<script type=\"text/javascript\">window.returnValue = 1;window.close(); </script>");
}



现在想知道如何让我点击完子窗口的按钮之后再触发父页面的这段代码:
if (hid.Value == "1")
{
Response.Write("b.aspx");
}


有没有看明白我的需求?
...全文
359 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
xupeihuagudulei 2010-11-05
  • 打赏
  • 举报
回复
最后我还是再post 一次,然后用参数判断再是否执行那段弹出模态框的代码。
杯具呀,只能这么弄了
gahyyai 2010-11-05
  • 打赏
  • 举报
回复
看清楚,不要一出来 就乱咬人
加油馒头 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 cuipinggui 的回复:]
引用 10 楼 jaylongli 的回复:
你的想法不可能。,,,

父窗体运行到一半 打开子窗体?运行结束,在继续父窗体下面的内容? 怎么可能

不知道HTTP是无状态的,必须通过客户端发出的请求,才会执行服务器段代码,要么不执行


放你的狗屁,完全有可能,用对象传递,代码如下

//打开模态窗口,并返回值,并刷新父页面
function windowopenbyref……
[/Quote]

垃圾 你看的代码 //打开模态窗口,并返回值,并刷新父页面


狗蛋 看清楚,不要一出来 就乱咬人
加油馒头 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 cuipinggui 的回复:]
引用 10 楼 jaylongli 的回复:
你的想法不可能。,,,

父窗体运行到一半 打开子窗体?运行结束,在继续父窗体下面的内容? 怎么可能

不知道HTTP是无状态的,必须通过客户端发出的请求,才会执行服务器段代码,要么不执行


放你的狗屁,完全有可能,用对象传递,代码如下

//打开模态窗口,并返回值,并刷新父页面
function windowopenbyref……
[/Quote]
你就是那条狗被主人放出了?

你这代码与楼主的意思相向不?

狗蛋
kokorenfeng 2010-11-05
  • 打赏
  • 举报
回复
为什么你不用ajax的ModalPopupExtender可能灵活的控制他的显示(show())和隐藏(hide())
在web上弹出模式窗口的功能

<asp:Panel ID="PanelLogin" runat="server">
<table cellpadding="0" cellspacing="5" align="center" bgcolor="#aaccdd" style="width: 300px">
<tr>
<td colspan="2" style="background-color: Gray; height: 20px;">
<strong>用户登录</strong>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Label ID="lblWrong" runat="server"></asp:Label></td>
</tr>
<tr style="height: 32px;">
<th style="width: 163px">
用户名</th>
<td align="left" style="width: 291px">
<asp:TextBox ID="txtLogin" runat="server" Width="146px">
</asp:TextBox>
</td>
</tr>
<tr style="height: 32px;">
<th style="width: 163px">
密码</th>
<td align="left" style="width: 291px; height: 28px;">
<asp:TextBox ID="txtPass" runat="server" TextMode="Password" Width="145px">
</asp:TextBox>
</td>
</tr>
<tr height="40" valign="top">
<td colspan="2" style="text-align: center;">
<asp:ImageButton runat="server" ID="imgLogin" ImageUrl="Images/az-login-gold-3d.gif"
OnClick="imgLogin_Click" CausesValidation="False" />
<asp:ImageButton ID="CancelBtn" runat="server" ImageUrl="Images/az-login-return-3d.gif" />
</td>
</tr>
</table>
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="hid"
PopupControlID="PanelLogin" DropShadow="true" CancelControlID="CancelBtn" Drag="true"
BackgroundCssClass="bgcss">
</cc1:ModalPopupExtender>
</asp:Panel>
<input id="hid" type="hidden" runat="server" />

后台就是
当达到什么条件的时候是this.ModalPopupExtender1.Show();
否则就this.ModalPopupExtender1.hide();

希望对你有帮助,,,,
cuipinggui 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jaylongli 的回复:]
你的想法不可能。,,,

父窗体运行到一半 打开子窗体?运行结束,在继续父窗体下面的内容? 怎么可能

不知道HTTP是无状态的,必须通过客户端发出的请求,才会执行服务器段代码,要么不执行
[/Quote]

放你的狗屁,完全有可能,用对象传递,代码如下

//打开模态窗口,并返回值,并刷新父页面
function windowopenbyreflushclick(sUrl,obj,iheight,iwidth)
{
var returnvalue = new Object();;
iheight=getIEVersion(iheight);
if(obj==null||obj=="")
{
//obj = new Object();
obj.window = window;
}
returnvalue=window.showModalDialog(sUrl,obj,"dialogHeight:"+iheight+"px;dialogWidth:"+iwidth+"px;center:yes;help:no;resizable:no;status:yes;scroll:no;");
return returnvalue;
}

浪子-无悔 2010-11-05
  • 打赏
  • 举报
回复
终于看明白到底是干嘛的了,学习了。
浪子-无悔 2010-11-05
  • 打赏
  • 举报
回复
这个问题讨论的真激烈啊,可惜一点不会。。。
zhubo006 2010-11-05
  • 打赏
  • 举报
回复
xupeihuagudulei 2010-11-05
  • 打赏
  • 举报
回复
还多谢你昨天帮我回答。
孟老大
xupeihuagudulei 2010-11-05
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 net_lover 的回复:]

不是杯具,是你思路问题。
[/Quote]呵呵,转不过弯
只通过这么个笨方法了
孟子E章 2010-11-05
  • 打赏
  • 举报
回复
不是杯具,是你思路问题。
孟子E章 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xupeihuagudulei 的回复:]
呵呵,是在登录的时候判断用户密码是否过期,
过期的话就弹出模态框修改密码,然后再回到登录页面去执行别的操作

最后再转向主页面。
[/Quote]

你的这种想法是典型的 C/S结构的思路。

B/S程序是无序的、无状态的。

孟子E章 2010-11-04
  • 打赏
  • 举报
回复
<%@ 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)
{
string s = Request.QueryString["data"];
if (String.IsNullOrEmpty(s))
Page.ClientScript.RegisterStartupScript(Page.GetType(), "k", "window.location.href='?data='+window.showModalDialog('b.aspx?UserName=123')", true);
else
Response.Redirect("http://dotnet.aspx.cc");
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server" action="?">

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


子窗口

<%@ 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 Button1_Click(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.GetType(), "open", "window.returnValue = 1;window.close();",true);
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<base target="_self" />
</head>
<body>
<form id="form1" runat="server">
<div>

</div>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</form>
</body>
</html>
xupeihuagudulei 2010-11-04
  • 打赏
  • 举报
回复
呵呵,是在登录的时候判断用户密码是否过期,
过期的话就弹出模态框修改密码,然后再回到登录页面去执行别的操作

最后再转向主页面。
加油馒头 2010-11-04
  • 打赏
  • 举报
回复
session 保存个状态,子窗体 运行结束,刷新父窗体时

判断session 状态是否存在,存在就 跳转就可以了
加油馒头 2010-11-04
  • 打赏
  • 举报
回复
貌似看LZ的代码 应该是 弹出 登陆框吧?
登陆成功后 父窗体跳转到 B界面(主界面)

你那种方法不行,建议用session 存储
孟子E章 2010-11-04
  • 打赏
  • 举报
回复
加参数判断啊
xupeihuagudulei 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 net_lover 的回复:]

服务器端代码是完全执行完毕才发送到客户端的

你那样做需要提交1次才能完成
[/Quote]那如果我再提交一次如何使它不用再弹出模态框。
也就是再次提交的时候不执行这语句
int i = 1;
if (i == 1)
{
ClientScript.RegisterStartupScript(this.GetType(), "open", "<script type=\"text/javascript\"> var str = document.getElementById(\"hid\"); alert(str.value=window.showModalDialog(\"b.aspx?UserName=123\"));</script>");
}
孟子E章 2010-11-04
  • 打赏
  • 举报
回复
服务器端代码是完全执行完毕才发送到客户端的

你那样做需要提交1次才能完成
加载更多回复(11)

62,271

社区成员

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

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

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

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