posts - 116,  comments - 34,  trackbacks - 0

ASP.net在做一些项目时,可能会遇到一鞋小麻烦,下面是几个使用ASP.net的小技巧:

1.在新窗口中打开页面
    我们经常需要在点击某个Button的时候打开一个新的页面,而且由于应用的需要,我们又不能使用超级连接或者LinkButton来代替这个Button,于是我们只有在Button的Click事件中进行新页面的打开工作。我将这个工作封装成一个API,如下:

 1 OpenWindowInNewPage #region  OpenWindowInNewPage
 2          // 在新窗口中打开页面
 3          public   static   void  OpenWindowInNewPage(Page curPage , string  destUrl)
 4          {            
 5              string  scriptString  =   string .Format( " window.open(' "   +   " {0} "   +   " ','_new');< "  ,destUrl) ;
 6             scriptString  +=   " / " ;
 7             scriptString  +=   " script> " ;
 8              if ( ! curPage.IsStartupScriptRegistered( " Startup " ))
 9              {
10                 curPage.RegisterStartupScript( " Startup " , scriptString);
11             }

12         }

13          #endregion


2.如果需要打开固定大小的页面,可以使用如下API

 1 OpenNewFixSizePage #region  OpenNewFixSizePage
 2          // 打开一个固定大小的页面,如果fullScreen为true ,则high与width不起作用
 3          public   static   void  OpenNewFixSizePage(Page page,  string  pageUrl,  bool  isCloseOldPage,  string  scriptName , bool  fullScreen , int  high , int  width)
 4          {
 5             StringBuilder StrScript  =   new  StringBuilder(); 
 6             StrScript.Append(  " "  );
 7              if (fullScreen)
 8              {
 9                 StrScript.Append( " width=screen.Width-10; " + " \n " );
10                 StrScript.Append( " height=screen.height-60; " + " \n " ); 
11             }

12              else
13              {
14                 StrScript.Append( string .Format( " width={0}; "  ,width) + " \n " );
15                 StrScript.Append( string .Format( " height={0}; "  ,high) + " \n " ); 
16             }

17
18             StrScript.Append(  " window.open(' " +  pageUrl  + " ','_blank','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,top=0,left=0,height='+ height +',width='+ width +''); "  ); 
19              if  ( isCloseOldPage )
20              {
21                 StrScript.Append(  "  window.focus(); "  );
22                 StrScript.Append(  "  window.opener=null; "  );
23                 StrScript.Append(  "  window.close();  "  );
24             }

25             StrScript.Append(  " "  );
26              if  (  !  page.IsStartupScriptRegistered( scriptName ) )
27              {
28                 page.RegisterStartupScript( scriptName, StrScript.ToString() );
29             }

30         }

31          #endregion

 

3.还有一种情况就是我们需要在关闭当前页面时,刷新当前页面的“父页面”,所谓“父页面”,就是Post本页面之前的一个页面。可以调用如下API:

RefreshFatherPage #region  RefreshFatherPage 
        
// 刷新Father页面        
         public   static   void  RefreshFatherPage(HttpResponse Response , bool  isCloseCurPage)
        
{            
            StringBuilder scriptString 
=   new  StringBuilder();
            scriptString.Append(
" " );
            scriptString.Append(
" window.opener.refresh(); " );
            
if  (isCloseCurPage )
            
{
                scriptString.Append( 
"  window.focus(); "  );
                scriptString.Append( 
"  window.opener=null; "  );
                scriptString.Append( 
"  window.close();  "  );
            }

            scriptString.Append(
" " + " script> " );
            Response.Write(scriptString.ToString());
        }


        
/**/ /*
         需要在Father页面的html中添加如下脚本(在Header中):
         
        function refresh()
        {
            this.location = this.location;
        }
        
         
*/

        
#endregion

关于第3点有一些补冲。

可以定义一个JS文件增加下面的函数。

function OpenerReload()
{
 if (opener && !opener.closed)
 {
  opener.Reload();
 }
}

Reload()函数就是子窗体内的脚本函数,这样在子窗体的脚本函数里可以调用任何服务器端的函数,就不需要在not Ispostback里面处理刷新的机能了。

例如使用

 function Reload() { document.forms(0).btnSearch.click(); }

父窗体调用的部分就可以写成Opener.OpenerReload();



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=636326

posted on 2006-03-28 15:14 萌芽的叶子 阅读(322) 评论(1)  编辑 收藏 引用 所属分类: asp.net

FeedBack:
# re: ASP.net的一点小技巧【转自qddn】
2008-03-11 16:41 | 自量
如何在打开新页面时不刷父页面啊?直接打开新页面  回复  更多评论
  
只有注册用户登录后才能发表评论。

<2006年4月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿(3)

随笔分类(115)

随笔档案(116)

文章分类(4)

相册

收藏夹(78)

.net中文社区

.net博客

.net英文社区

AJAX

ASP.NET 2.0

ASP.NET 学习

DataBase

ERP

E杂志

Html&Css

JavaScript

Microsoft

Open Sourse

SAP

WebCasts

WebServices

XML

其他

好友Blog

好文章连接

开发工具

控件

物流

职业经理人

设计模式

读书网站

非技术

项目管理

搜索

  •  

积分与排名

  • 积分 - 57077
  • 排名 - 108

最新评论

阅读排行榜

评论排行榜