问题描述
各位高手,有个问题求助,我搞了一天,也从网上查询了许久,找不到办法,请帮帮我。事由:我使用vs2010c#,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","varleft=Math.round((window.screen.width-880)/2);vartop=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)中,有一个方法:publicvoidmethod_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#代码都不能实现,敬请大家指教。最好有完整的前台后台,父页子页代码。我刚转入aspc#,希望指点,给分50,谢谢!
解决方案
解决方案二:
求求大家,给我想个办法吧
解决方案三:
method_A()单独写在一个类里面不行吗?如果需要参数则传递进去返回去值。然后A,B页面都就可以用了。
解决方案四:
如果将method_A()单独写一个类,则不能绑定和刷新页面父A(aaspx)中的网格Gridview_A
解决方案五:
我现在不需要传递参数返回值,我的目的是需要在子页面B中取出表Table_A(放在Session["Table_A"]中),然后将该表绑定在父页面A上的网格Gridview_A中,刷新后关闭B页面返回到A页面上
解决方案六:
在A添加一个Button(用样式设置为隐藏),绑定事件,重新绑定GVB可以用js触发jQuery(window.opener).find("#RButton").click();
解决方案七:
jQuery(window.opener).find("#RButton").click();提示“缺少对象”
解决方案八:
我已在A添加一个Button(用样式设置为隐藏),绑定事件,重新绑定GV
解决方案九:
我自己搞出来了:方法:通过js互调具体:父页面建两个js函数:functioncallMethod()//调用方法,用于绑定table到GV(Gridview_A){vars="<%=GridView_jion_DataBounding()%>";alert(s);}functionrefreshpage()//调用按键click,用于刷新页面(不需要代码),{//varobj=document.getElementById('<%=Buttonsx%>')//document.getElementById("Button_sx");varobj=document.getElementById('MainContent_Buttonsx')//通过js调试中查出Buttonsx的实际id,通过<%=Buttonsx%>不能查出obj.click();}子页面1、建一个js函数,调用父页面JS函数functioncallFatherjs()//调用父页面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
解决方案十:
MARK。。。。。。。。。。。。
解决方案十一:
当然你可以使用C#程序来实现:其实B.aspx.cs就可以执行A.aspx.cs的方法,或者反之。参考:
解决方案十二:
引用8楼hxg391145的回复:
我自己搞出来了:
asp.net页面一瞬间就结束生命期了,所以在asp.net端根本不存在所谓“两个页面交互”的说法。只有浏览器端才存在opener机制。如果先把机制搞对了,其实非常简单。