从WinKen中转来,模式窗体刷新父窗体的方法

原文地址:http://www.cnblogs.com/WinKen/archive/2007/05/15/746752.html

 

在模式窗口中唰新父窗口的实现可以有多种实现的方法.
但这个是在网上看到的一刚关于在模式窗口中唰新父窗口比较好的实现也比较简单...哈哈(个人观点).
发出来共享一下...
我在工作中的ASP.NET项目中也遇到了这个问题,需要在添加修改等操作以后关闭子窗口,同时刷新父窗口,非常的棘手.
我是这样解决的:
首先在父上放一个刷新列表用的按扭控件,然后对它进行编程,调用onClick来运行Codebehind里的C#函数,当然,这些都是和你的程序有关的东西,

大家自己研究,以我的程序为例,我在这个按扭上运行了一个公用类的一个函数,用来render当前页的DataGrid。我把这个按扭控件的ID设为refresh,其实什么都可以。

然后在子窗体上的添加或者修改按扭上的服务器端事件中注册一个js代码块来执行window.dialogArguments.document.forms[0].refresh.click();
之所以没有self.close()是因为父窗体提交以后,IE6会自动关闭子窗体,子窗体消失的速度非常快,可以说是自动的self.close()。

好了,以上代码都写好了以后,就可以在父窗体的DataGrid的SelectedIndexChanged事件中调用函数来注册js代码块。来执行window.showModelessDialog()。

由于本人目前专心开发ASP.NET程序,并且都是使用ModelessDialog来力争实现一种WinForm的外观和用户体验,所以对这个父子窗口的功能非用不可。呵呵,虽然这个

方法不是什么太高明的方法,需要在父窗体上放一个刷新按扭,并且还要对这个按扭编程刷新ASPX页,但由于有ASP.NET特有的一些form特性,使得以上的实现效果还是非常

好的。但不知道离开了ASP.NET环境,这个刷新按扭还应该做什么其它的考虑了,不做ASP.NET的话,我这个方法恐怕实现起来还是显得比较笨拙了。不过,在ASP.NET环境中调用的话,效果的确非常理想

posted on 2008-08-31 11:02  老马的家  阅读(529)  评论(0编辑  收藏  举报