Asp c# 如何在子页面中调用父页面中的方法或执行父页面中某个按键(Button)中的代码

hxg391145 2014-01-03 08:08:55
各位高手,有个问题求助,我搞了一天,也从网上查询了许久,找不到办法,请帮帮我。
事由:
我使用 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,谢谢!

...全文
522 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 8 楼 hxg391145 的回复:
我自己搞出来了:
asp.net 页面一瞬间就结束生命期了,所以在 asp.net 端根本不存在所谓“两个页面交互”的说法。只有浏览器端才存在 opener 机制。 如果先把机制搞对了,其实非常简单。
insus 2016-05-15
  • 打赏
  • 举报
回复
当然你可以使用C#程序来实现: 其实B.aspx.cs就可以执行A.aspx.cs的方法,或者反之。 参考: http://www.cnblogs.com/insus/p/3656800.html
nimeide1234567890 2016-05-14
  • 打赏
  • 举报
回复
MARK 。。。。。。。。。。。 。
md5e 2014-01-04
  • 打赏
  • 举报
回复
在A添加一个Button(用样式设置为隐藏),绑定事件,重新绑定GV B可以用js触发 jQuery(window.opener).find("#RButton").click();
hxg391145 2014-01-04
  • 打赏
  • 举报
回复
我现在不需要传递参数返回值,我的目的是需要在子页面B中取出表Table_A(放在Session["Table_A"] 中),然后将该表绑定在 父页面A 上的网格Gridview_A中,刷新后关闭B页面返回到A页面上
hxg391145 2014-01-04
  • 打赏
  • 举报
回复
如果将method_A() 单独写一个类,则不能绑定和刷新页面父 A(aaspx)中的网格Gridview_A
hxg391145 2014-01-04
  • 打赏
  • 举报
回复
我自己搞出来了: 方法:通过 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
hxg391145 2014-01-04
  • 打赏
  • 举报
回复
我已在A添加一个Button(用样式设置为隐藏),绑定事件,重新绑定GV
hxg391145 2014-01-04
  • 打赏
  • 举报
回复
jQuery(window.opener).find("#RButton").click(); 提示“ 缺少对象”
蝶恋花雨 2014-01-03
  • 打赏
  • 举报
回复
method_A() 单独写在一个类里面不行吗? 如果需要参数则传递进去返回去值。然后A,B页面都就可以用了。
hxg391145 2014-01-03
  • 打赏
  • 举报
回复
求求大家,给我想个办法吧

62,052

社区成员

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

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

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

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