问题:
弹出窗口刷新它的父页面后。出现不重新发送信息,则无法刷新网页
===============================================================
论谈答复:
如下:在.NET里头
默认有POSTBACK的控件存在
当页面回传的时候
后台会根据postback的内容进行操作
这样
我们可以从IE浏览器中调看这个回传代码
是一个叫__dopostback(..,..)的方法
<script language="javascript" type="text/javascript">
<!--
function __doPostBack(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
theform = document.Form1;
}
else {
theform = document.forms["Form1"];
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
// -->
</script>的脚本
所以从父窗体打开新窗体的时候
新窗体都会返回一个值
叫做window.returnValue
利用这样的特性
我是这么解决的:
1)修改窗体更改与刷新的注意点:
1.父窗体一定要
有三处修改:
第一:页面加载时候的脚本写入
PCMS.cla.page.sc.page_postback_register(this.Page);
第二:postback的判断 else
{
//PCMS.cla.page.sc.page_c_win_openPageclose_returnvalue("pleasefresh");
if(Request.Form["__eventargument"]!=null)
{
if(Request.Form["__eventargument"].ToString()=="pleasefresh")
{
this.databind(true);
}
}
}
第三:打开页面的调用(调整窗体大小)
PCMS.cla.page.sc.page_f_win_opendialog_returnvalue(this.Page,"l02_dialog_Check_Car_M.aspx?intemp="+e.Item.Cells[0].Text,800,750);
2.子窗体一定在关闭的时候:
PCMS.cla.page.sc.page_c_win_openPageclose_returnvalue(this.Page,"pleasefresh");
3.在类库中进行的代码书写:
/// <summary>
/// 页面执行页面刷新的返回服务器端传送信号的JAVASCRIPT函数
/// </summary>
/// <param name="page">镶嵌javascript代码的页面名</param>
/// <returns></returns>
public static void page_postback_register(System.Web.UI.Page page)
{
string javascriptpostback="<script language=\"javascript\" type=\"text/javascript\">"+
"function ___doPostBack(eventTarget, eventArgument) "+
"{"+
"var theform;"+
"if (window.navigator.appName.toLowerCase().indexOf(\"microsoft\") > -1) "+
"{"+
"theform = document.Form1;"+
"}"+
"else "+
"{"+
"theform = document.forms[\"Form1\"];"+
"}"+
"theform.__EVENTTARGET.value = eventTarget.split(\"$\").join(\":\");"+
"theform.__EVENTARGUMENT.value = eventArgument;"+
"theform.submit();"+
"}"+
"</script>";
page.RegisterClientScriptBlock("PostbackServer",javascriptpostback);
}
/// <summary>
/// 和___PostBack一起同时使用,用在一个页面上
/// 父亲窗体通过Request.From["__eventargument"].ToString()获取子窗体关闭时候提供的ReturnValue值
/// </summary>
/// <param name="page">要执行的页面对象</param>
/// <param name="URL">要打开的页面地址</param>
/// <param name="width">宽</param>
/// <param name="height">高</param>
public static void page_f_win_opendialog_returnvalue(System.Web.UI.Page page,string URL,int width,int height)
{
//Response.Write(System.Web.HttpUtility.HtmlEncode("你 %^&*% 好"));
string js2="<script language=\"JavaScript\">";
js2+=string.Format("res=window.showModalDialog(\"{0}\",window,\"status:false;dialogWidth:{1}px;dialogHeight:{2}px\");___doPostBack('Form1',res);",URL,width.ToString(),height.ToString());
js2+="</script>";
page.RegisterClientScriptBlock("can",js2);
}
/// <summary>
/// 窗体关闭返回给父窗体事件,父亲窗体通过Request.From["__eventargument"].ToString()获取ReturnValue值
/// </summary>
/// <param name="page">子窗体页面对象</param>
/// <param name="ReturnValue">返回给父窗体的值</param>
public static void page_c_win_openPageclose_returnvalue(System.Web.UI.Page page,string ReturnValue)
{
page.RegisterStartupScript("return",string.Format("<script>window.returnValue=\""+ReturnValue+"\";window.close();</script>"));
}
这样就很容易解决了 问题:page_f_win_opendialog_returnvalue方法的使用问题。
我在父界面如何点按钮执行page_f_win_opendialog_returnvalue方法???
弹出窗口刷新它的父页面后。出现不重新发送信息,则无法刷新网页
===============================================================
论谈答复:
如下:在.NET里头
默认有POSTBACK的控件存在
当页面回传的时候
后台会根据postback的内容进行操作
这样
我们可以从IE浏览器中调看这个回传代码
是一个叫__dopostback(..,..)的方法
<script language="javascript" type="text/javascript">
<!--
function __doPostBack(eventTarget, eventArgument) {
var theform;
if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1) {
theform = document.Form1;
}
else {
theform = document.forms["Form1"];
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
// -->
</script>的脚本
所以从父窗体打开新窗体的时候
新窗体都会返回一个值
叫做window.returnValue
利用这样的特性
我是这么解决的:
1)修改窗体更改与刷新的注意点:
1.父窗体一定要
有三处修改:
第一:页面加载时候的脚本写入
PCMS.cla.page.sc.page_postback_register(this.Page);
第二:postback的判断 else
{
//PCMS.cla.page.sc.page_c_win_openPageclose_returnvalue("pleasefresh");
if(Request.Form["__eventargument"]!=null)
{
if(Request.Form["__eventargument"].ToString()=="pleasefresh")
{
this.databind(true);
}
}
}
第三:打开页面的调用(调整窗体大小)
PCMS.cla.page.sc.page_f_win_opendialog_returnvalue(this.Page,"l02_dialog_Check_Car_M.aspx?intemp="+e.Item.Cells[0].Text,800,750);
2.子窗体一定在关闭的时候:
PCMS.cla.page.sc.page_c_win_openPageclose_returnvalue(this.Page,"pleasefresh");
3.在类库中进行的代码书写:
/// <summary>
/// 页面执行页面刷新的返回服务器端传送信号的JAVASCRIPT函数
/// </summary>
/// <param name="page">镶嵌javascript代码的页面名</param>
/// <returns></returns>
public static void page_postback_register(System.Web.UI.Page page)
{
string javascriptpostback="<script language=\"javascript\" type=\"text/javascript\">"+
"function ___doPostBack(eventTarget, eventArgument) "+
"{"+
"var theform;"+
"if (window.navigator.appName.toLowerCase().indexOf(\"microsoft\") > -1) "+
"{"+
"theform = document.Form1;"+
"}"+
"else "+
"{"+
"theform = document.forms[\"Form1\"];"+
"}"+
"theform.__EVENTTARGET.value = eventTarget.split(\"$\").join(\":\");"+
"theform.__EVENTARGUMENT.value = eventArgument;"+
"theform.submit();"+
"}"+
"</script>";
page.RegisterClientScriptBlock("PostbackServer",javascriptpostback);
}
/// <summary>
/// 和___PostBack一起同时使用,用在一个页面上
/// 父亲窗体通过Request.From["__eventargument"].ToString()获取子窗体关闭时候提供的ReturnValue值
/// </summary>
/// <param name="page">要执行的页面对象</param>
/// <param name="URL">要打开的页面地址</param>
/// <param name="width">宽</param>
/// <param name="height">高</param>
public static void page_f_win_opendialog_returnvalue(System.Web.UI.Page page,string URL,int width,int height)
{
//Response.Write(System.Web.HttpUtility.HtmlEncode("你 %^&*% 好"));
string js2="<script language=\"JavaScript\">";
js2+=string.Format("res=window.showModalDialog(\"{0}\",window,\"status:false;dialogWidth:{1}px;dialogHeight:{2}px\");___doPostBack('Form1',res);",URL,width.ToString(),height.ToString());
js2+="</script>";
page.RegisterClientScriptBlock("can",js2);
}
/// <summary>
/// 窗体关闭返回给父窗体事件,父亲窗体通过Request.From["__eventargument"].ToString()获取ReturnValue值
/// </summary>
/// <param name="page">子窗体页面对象</param>
/// <param name="ReturnValue">返回给父窗体的值</param>
public static void page_c_win_openPageclose_returnvalue(System.Web.UI.Page page,string ReturnValue)
{
page.RegisterStartupScript("return",string.Format("<script>window.returnValue=\""+ReturnValue+"\";window.close();</script>"));
}
这样就很容易解决了 问题:page_f_win_opendialog_returnvalue方法的使用问题。
我在父界面如何点按钮执行page_f_win_opendialog_returnvalue方法???
解决方案 »
- .net 中sql server2005分页写法的疑问
- 这段段生成验证码图片的代码,想请教几个问题
- CompareValidator控件设置ValidationGroup后的问题?困惑
- 为什么我在XP+IIS5.1下正常,需在Win2K3+IIS6下都出现乱码?
- 搞了个网络硬盘(B/s). 现在想写个客户端的Ftp(C/s),不知道怎么写?
- 如何把 32度12分36.234秒 转化成 xx.xxxxxxx 度?(Oracle)。急,帮忙!!!!!!
- 怎样设置和访问DataGrid 中的控件
- 关于.net 中office组件(owc chart)画图的问题?(在线等)
- 如何将论坛中的帖子列表生成静态页面?请高人指点,百分相送,不够再加
- 急问题,sqlserver2000——————.dbf
- 布署。NET程序时遇到的怪问题,救命啊
- 请教在datagrid的模版列中,能不能将当前行号做为参数?
给按钮添加事件
button1.Click += new EventHandle(this.button1_ServerClick);private void button1_ServerClick(object sender,EventArgs e)
{
PCMS.cla.page.sc.page_f_win_opendialog_returnvalue(this.Page,"要打开页面的url",800,600);
}在打开的页面中,关闭按钮添加PCMS.cla.page.sc.page_c_win_openPageclose_returnvalue(this.Page,"返回值");