关键点
不能用客户端控件来触发弹出框(如用<a onclik="show()">/</a>),因为这样子的话得不到刷新页面的机会。
执行的顺序将是:父页面的pageload -》子页面的pageload-》子页面关闭按钮的事件对应处理方法。
不能直接弹出aspx页面,这样得到父页面,在关闭弹出框时,将会新出一个和弹出页面一样的不是弹出框的页面。
解决办法是弹出html页面,在html页面里用ifrmae嵌入aspx页面示例
<iframe id="ifm" width="100%" height="100%"></iframe>。
这里就需要用js处理从父页面传来的参数了
方法是先在html里面取得参数,然后结合url给iframe的src赋值实例代码:
<script type="text/javascript">
function SeIfmtUrl()
{
var str=location.href.toString().toLowerCase(); //获得浏览器地址栏URL串
var num=str.indexOf("?")
str=str.substr(num); //截取“?”后面的参数串
var ifm=document.getElementById("ifm");
ifm.src="ProductList.aspx"+str;
}
</script>
在加载完成之后即在body之前再执行方法
</body>
<script type="text/javascript">
SeIfmtUrl();
</script>
。对于子页面关闭并处理业务的按钮,在处理完成之后
执行 Response.Write("<script>window.close()</script>");
示例:protected void Button3_Click1(object sender, EventArgs e)
{
//do what you want
Response.Write("<script>window.close()</script>");
}
下面给出父页面的关键示例:
弹出模式对话框
<script type="text/javascript">
function ShowModel(id)
{
window.showModalDialog('HTMLPage1.htm?id='+id,'','dialogWidth:35;dialogHeight:20');
}
</script>
父页面触发弹出框的button设置
<asp:Button ID="Button2" runat="server" CommandName="D" %>' Text="弹出" OnClientClick="ShowModel('100');"/>
button设置下面的示例是button在gridview中,注意那个commandname,是为了唤醒服务器处理click事件,不然父页面得不到执行,
或者是执行的顺序不是先子页面处理完毕再处理父页面。