各位高手,有个问题求助,我搞了一天,也从网上查询了许久,找不到办法,请帮帮我。
事由:
我使用 vs2010 c# , ie8 建网站,现有父页面A和子页面B。
A 页面(父页面):
在A 页面(A.aspx)有一个GridView网格Gridview_A, Gridview_A 通过A 页面上的按键 Button_A_Click 将 表Table_A (Table_A 放在 Session["Table_A"] 中)绑定,A 页面(A.aspx)还有一个调用子页面 B(B.aspx)的按键 Button_AcallB_Click,内置代码为:
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "click", "var left=Math.round((window.screen.width-880)/2);var top=Math.round((window.screen.height-600)/2);window.open('B.aspx','Notes','height=600, width=880, top='+top+', left='+left+',scrollbars=yes,toolbar=no, menubar=no,resizable=no,location=no, status=no');", true);
用于打开子页面 B(B.aspx)。
在A 页面的后台(A.aspx.cs)中,有一个方法:
public void method_A()
{
// 从 Session["Table_A"] 取出保存的人员表 Table_A,绑定及刷新A 页面上的网格 Gridview_A
// 其代码与按键 Button_A_Click (将 表Table_A (Table_A 放在 Session["Table_A"] 中)绑定)完全相同
}B页面(子页面):
B页面 有一个按键Button_B_Click, 其代码功能是从sql数据库查询数据后放入 Session["Table_A"] 中,然后从 Session["Table_A"] 取出表 Table_A 绑定到父页面 A的Gridview_A上,然后关闭子页面 B 重新回到主页面 A 上。需要实现:在子页面 B上不能直接绑定数据到 主页A上的Gridview_A中,那么只能调用主页A页面上的方法 method_A(),或者执行 主页A中的按键 Button_A_Click 中的代码来实现。问题:我用js 或c# 代码都不能实现,敬请大家指教。最好有完整的前台后台,父页子页代码。
我刚转入 asp c# , 希望指点,给分50,谢谢!
事由:
我使用 vs2010 c# , ie8 建网站,现有父页面A和子页面B。
A 页面(父页面):
在A 页面(A.aspx)有一个GridView网格Gridview_A, Gridview_A 通过A 页面上的按键 Button_A_Click 将 表Table_A (Table_A 放在 Session["Table_A"] 中)绑定,A 页面(A.aspx)还有一个调用子页面 B(B.aspx)的按键 Button_AcallB_Click,内置代码为:
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "click", "var left=Math.round((window.screen.width-880)/2);var top=Math.round((window.screen.height-600)/2);window.open('B.aspx','Notes','height=600, width=880, top='+top+', left='+left+',scrollbars=yes,toolbar=no, menubar=no,resizable=no,location=no, status=no');", true);
用于打开子页面 B(B.aspx)。
在A 页面的后台(A.aspx.cs)中,有一个方法:
public void method_A()
{
// 从 Session["Table_A"] 取出保存的人员表 Table_A,绑定及刷新A 页面上的网格 Gridview_A
// 其代码与按键 Button_A_Click (将 表Table_A (Table_A 放在 Session["Table_A"] 中)绑定)完全相同
}B页面(子页面):
B页面 有一个按键Button_B_Click, 其代码功能是从sql数据库查询数据后放入 Session["Table_A"] 中,然后从 Session["Table_A"] 取出表 Table_A 绑定到父页面 A的Gridview_A上,然后关闭子页面 B 重新回到主页面 A 上。需要实现:在子页面 B上不能直接绑定数据到 主页A上的Gridview_A中,那么只能调用主页A页面上的方法 method_A(),或者执行 主页A中的按键 Button_A_Click 中的代码来实现。问题:我用js 或c# 代码都不能实现,敬请大家指教。最好有完整的前台后台,父页子页代码。
我刚转入 asp c# , 希望指点,给分50,谢谢!
如果需要参数则传递进去返回去值。然后A,B页面都就可以用了。
B可以用js触发 jQuery(window.opener).find("#RButton").click();
提示“ 缺少对象”
方法:通过 js 互调
具体:
父页面 建两个js 函数:
function callMethod() // 调用方法,用于绑定 table 到 GV(Gridview_A)
{
var s = "<%=GridView_jion_DataBounding()%>";
alert(s);
} function refreshpage() // 调用按键 click,用于刷新页面(不需要代码),
{
// var obj = document.getElementById('<% =Buttonsx%>') // document.getElementById("Button_sx");
var obj = document.getElementById('MainContent_Buttonsx') //通过js 调试中查出 Buttonsx 的实际id,通过 <% =Buttonsx%> 不能查出
obj.click();
}子页面
1、建 一个js 函数,调用父页面 JS 函数
function callFatherjs() // 调用父页面js
{
window.opener.callMethod(); // 调用父页面方法
window.opener.refreshpage(); // 调用父页面按键 click,用于刷新父页面
}
2、在保存完 table 到 Session:
Session["Vs_dt_jion"] = dt_jion; // 保存人员,用于绑定父页面的 gridview_jion
加一句:
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>callFatherjs();</script>"); //调用 子页面 js
// 以上这句 通过本页面js 调用父页面js,从而调用父页面的js,父页面的js 在调用父页面的方法(绑定数据)和按键click(用于刷新页面,从而显示数据在父页面的 GV中)
ok
其实B.aspx.cs就可以执行A.aspx.cs的方法,或者反之。参考:
http://www.cnblogs.com/insus/p/3656800.html
asp.net 页面一瞬间就结束生命期了,所以在 asp.net 端根本不存在所谓“两个页面交互”的说法。只有浏览器端才存在 opener 机制。如果先把机制搞对了,其实非常简单。