从子窗体传递数据给父窗体
很簡單的解決方法
在.NET里頭
默認(rèn)有POSTBACK的控件存在
當(dāng)頁面回傳的時(shí)候
后臺會根據(jù)postback的內(nèi)容進(jìn)行操作
這樣
我們可以從IE瀏覽器中調(diào)看這個(gè)回傳代碼
是一個(gè)叫__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>的腳本
所以從父窗體打開新窗體的時(shí)候
新窗體都會返回一個(gè)值
叫做window.returnValue
利用這樣的特性
我是這么解決的:
1)修改窗體更改與刷新的注意點(diǎn):
1.父窗體一定要
有三處修改:
第一:頁面加載時(shí)候的腳本寫入
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);
}
}
}
第三:打開頁面的調(diào)用(調(diào)整窗體大小)
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.子窗體一定在關(guān)閉的時(shí)候:
PCMS.cla.page.sc.page_c_win_openPageclose_returnvalue(this.Page,"pleasefresh");
3.在類庫中進(jìn)行的代碼書寫:
/// <summary>
/// 頁面執(zhí)行頁面刷新的返回服務(wù)器端傳送信號的JAVASCRIPT函數(shù)
/// </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一起同時(shí)使用,用在一個(gè)頁面上
/// 父親窗體通過Request.From["__eventargument"].ToString()獲取子窗體關(guān)閉時(shí)候提供的ReturnValue值
/// </summary>
/// <param name="page">要執(zhí)行的頁面對象</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>
/// 窗體關(guān)閉返回給父窗體事件,父親窗體通過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>"));
}
這樣就很容易解決了
??回復(fù)??更多評論 ??
#?re: 彈出窗口刷新它的父頁面后。出現(xiàn)不重新發(fā)送信息,則無法刷新網(wǎng)頁 2005-09-29 13:54 黃瑋璘
上面有地方省略了些代碼
這些代碼頁面加載時(shí)的判斷:
if(this.Page.IsPostBack==false)
{
//第一次加載頁面的時(shí)候在這里運(yùn)行代碼
}
else
{
//不是第一次登錄頁面時(shí)候在這里運(yùn)行代碼
//通過判斷postback的參數(shù)進(jìn)行代碼調(diào)整
if(Request.Form["__eventargument"]!=null)
{
if(Request.Form["__eventargument"].ToString()=="pleasefresh")
{
//重新調(diào)整數(shù)據(jù)的函數(shù)調(diào)用,自己定義
this.databind(true);
}
}??回復(fù)??更多評論 ??
#?re: 彈出窗口刷新它的父頁面后。出現(xiàn)不重新發(fā)送信息,則無法刷新網(wǎng)頁 2005-09-29 14:00 黃瑋璘
我這里有一個(gè)涉及真正要刷新的問題
同一個(gè)頁面下面
我有一個(gè)image控件
當(dāng)我按下一個(gè)按鈕的時(shí)候
我要隨機(jī)指定一張jpg圖片然后壓縮成gif文件
這個(gè)gif文件叫b.gif
我要這個(gè)image控件在每次按鈕事件結(jié)束后綁定一個(gè)叫b.gif的圖片
顯示即時(shí)的圖片
但是IE的緩存使得任何的加載方式都不能顯示更新后的b.gif
除非IE瀏覽器關(guān)閉否則無法看到更新后的b.gif文件
請問諸位有沒有高招幫我這個(gè)忙?
轉(zhuǎn)載于:https://www.cnblogs.com/huangweilin/archive/2007/04/27/730355.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的从子窗体传递数据给父窗体的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPF/WPFE笔记(一):准备工作
- 下一篇: 个人的web开发心得(八)-------