让ASP.NET简便使用SCRIPT.

下载例子和相关源码

在开发ASP.NET应用程序过程中编写Script是件很烦人的事情,其实我们可以把常用的Script装成相应的.NET组件在服务端调用,这样可以大大简化Script的编写还提高的Script的重用.

以下是常用的打开模式窗体并获取返回值的类调用,实际上可以给设置多个参数传入和不同控件获取不同返回值的结果.

定义打开窗体并设置返回值脚本类.
HFSoft.Web.Scripts.ShowModalDialog dialog=new HFSoft.Web.Scripts.ShowModalDialog(
    XXX.Units.Config.WebBoot+"Appunit/WindowOpenDialog.aspx",
    FrmFailureLogSearch.PageURI());
dialog.Height=400;
dialog.Width=600;
dialog.ReturnElements.Add(new HFSoft.Web.Scripts.ReturnElement(this.txtReturn.ClientID,"ReturnString"));
HFSoft.Web.Scripts.RegisterScript.RegiOnClick(cmdSearch,dialog);

打开窗体设置返回值的代码
HFSoft.Web.Scripts.ReturnValues returnValue=new HFSoft.Web.Scripts.ReturnValues();
returnValue.Add("ReturnString",filter);
HFSoft.Web.Scripts.RegisterScript.RegiPageClient(this,"return",returnValue);

打开窗体类的代码(其实很多Script都可以通过这样的方式来封装).
 

00006     namespace HFSoft . Web . Scripts 

00007    

00008         /// <summary>  

00009         /// 创建打开窗体脚本类  

00010         /// 注意:返回值参数据接收的数据格式必须  

00011         /// key=value|key1=value1|.....  

00012         /// </summary>  

00013         public class ShowModalDialog : IExecuteScript 

00014        

00015             private const string _Dialog ="window.showModalDialog({0},' ',' dialogHeight : { 1 } px ;  

                     dialogWidth : { 2 } px ; edge : Raised ; center : Yes ; help : No ; resizable : No ; status : No ; scroll :  

                     Yes ;');" ; 

00016             #region IExecuteScript 成员 

00017             private bool mParent = false

00018             /// <summary>  

00019             /// 是否需要加载父指向  

00020             /// </summary>  

00021             public bool Parent 

00022            

00023                 get 

00024                

00025                     // TODO: 添加 SetElementsValue.Parent getter 实现  

00026                     return mParent

00027                

00028                 set 

00029                

00030                     // TODO: 添加 SetElementsValue.Parent setter 实现  

00031                     mParent = value

00032                

00033            

00034             private string GetParent () 

00035            

00036                 if ( Parent

00037                     return "parent." ; 

00038                 return "" ; 

00039            

00040             /// <summary>  

00041             /// 构造对象  

00042             /// </summary>  

00043             /// <param name="pageContainer">容器页</param>  

00044             /// <param name="openPage">具本打开的页面</param>  

00045             public ShowModalDialog ( string pageContainer , string openPage

00046            

00047                 PageContainer = pageContainer

00048                 OpenPage = openPage

00049            

00050             public const string PageUrlTag ="pageurl" ; 

00051             /// <summary>  

00052             /// 生成脚本  

00053             /// </summary>  

00054             /// <returns>string</returns>  

00055             public string Execute () 

00056            

00057                 // TODO: 添加 ShowModalDialog.Execute 实现  

00058                 string url ="' " + PageContainer +" ? pageurl ='+" + GetPage (); 

00059                 url = string . Format ( _Dialog , url , Height , Width ); 

00060                 url = GetParent () + url

00061                 if ( ReturnElements . Count >0) 

00062                

00063                     url = "var getvalue=" + url +";if(getvalue != null){" ; 

00064                     foreach ( ReturnElement item in ReturnElements

00065                    

00066                         url +=  item . GetScript ( GetParent ()); 




00067                    

00068                     url +="}" ; 

00069                     return url +";" ; 

00070                

00071                 return url +";" ; 

00072            

00073      

00074             #endregion  

00075             private string mPageContainer

00076             /// <summary>  

00077             /// 获取或设置容器页(包含路径)  

00078             /// </summary>  

00079             public string PageContainer 

00080            

00081                 get 

00082                

00083                     return mPageContainer

00084                

00085                 set 

00086                

00087                     mPageContainer = value

00088                

00089            

00090             private string mOpenPage

00091             /// <summary>  

00092             /// 打开的页(包含路径)  

00093             /// </summary>  

00094             public string OpenPage 

00095            

00096                 get 

00097                

00098                     return mOpenPage

00099                

00100                 set 

00101                

00102                     mOpenPage = value

00103                

00104            

00105             private int mHeight =400; 

00106             /// <summary>  

00107             /// 获取或设置打开窗体的高度  

00108             /// </summary>  

00109             public int Height 

00110            

00111                 get 

00112                

00113                     return mHeight

00114                

00115                 set 

00116                

00117                     mHeight = value

00118                

00119            

00120             private int mWidth =400; 

00121             /// <summary>  

00122             /// 获取或设置打开窗体的宽度  

00123             /// </summary>  

00124             public int Width 

00125            

00126                 get 

00127                

00128                     return mWidth

00129                

00130                 set 

00131                




00132                     mWidth = value

00133                

00134            

00135             private  ReturnElementCollections mReturnElements = new ReturnElementCollections (); 

00136             /// <summary>  

00137             /// 获取返回值元素集  

00138             /// </summary>  

00139             public  ReturnElementCollections ReturnElements 

00140            

00141                 get 

00142                

00143                     return mReturnElements

00144                

00145            

00146             private ParameterCollection mParameters = new ParameterCollection (); 

00147             /// <summary>  

00148             /// 获取打开页面的参数集  

00149             /// </summary>  

00150             public ParameterCollection Parameters 

00151            

00152                 get 

00153                

00154                     return mParameters

00155                

00156            

00157             private string GetPage () 

00158            

00159                 if ( Parameters . Count ==0) 

00160                     return "' "+OpenPage+" '" ; 

00161                 System . Text . StringBuilder sb = new System . Text . StringBuilder (); 

00162                 sb . Append ("' "+OpenPage+" '" ); 

00163                 string param ="" ; 

00164                 string parent = GetParent (); 

00165                 for ( int i =0; i < Parameters . Count ; i ++) 

00166                

00167                     if ( Parameters [ i ]. Element == ElementType . Element

00168                    

00169                         param ="' " + Parameters[i].Name +" =' + " + parent +"document.all('  

                                 "+Parameters[i].Value + " ').value" ; 

00170                    

00171                     else if ( Parameters [ i ]. Element == ElementType . Select

00172                    

00173                         param ="' " + Parameters[i].Name +" =' + " + parent +"__getSeletedButton(" + parent

                                 "document.all(' "+Parameters[i].Value + " '))" ; 

00174                    

00175                     if ( i ==0) 

00176                    

00177                         sb . Append ("+' "+System.Web.HttpUtility.UrlEncode(" ?") +" '+" + param ); 

00178                    

00179                     else 

00180                    

00181                         sb . Append ("+' "+System.Web.HttpUtility.UrlEncode(" &") +" '+" + param ); 

00182                    

00183                

00184                 return sb . ToString (); 

00185            

00186              

00187              

00188              

00189        

00190         #region subClass 

00191         public enum ElementType 

00192        

00193             None

00194             Element

00195             Select 




00196        

00197             /// <summary>  

00198             /// 参数描述类  

00199             /// </summary>  

00200             public class Parameter 

00201            

00202                 /// <summary>  

00203                 /// 构造参数对象  

00204                 /// </summary>  

00205                 public Parameter () 

00206                

00207                

00208                 /// <summary>  

00209                 /// 构造指定名称和值的参数对象  

00210                 /// </summary>  

00211                 /// <param name="name">参数名称</param>  

00212                 /// <param name="value">参数值</param>  

00213                 public Parameter ( string name , string value

00214                

00215                     Name = name

00216                     Value = value

00217                

00218                 /// <summary>  

00219                 /// 构造指定名称和值的参数对象  

00220                 /// </summary>  

00221                 /// <param name="name">参数名称</param>  

00222                 /// <param name="value">参数值</param>  

00223                 /// <param name="iselement">值是否元素名称</param>  

00224                 public Parameter ( string name , string value , ElementType element

00225                

00226                     Name = name

00227                     Value = value

00228                     Element = element

00229                

00230              

00231                 private string mName

00232                 /// <summary>  

00233                 /// 获取或设置参数名称  

00234                 /// </summary>  

00235                 public string Name 

00236                

00237                     get 

00238                    

00239                         return mName

00240                    

00241                     set 

00242                    

00243                         mName = value

00244                    

00245                

00246                 private string mValue

00247                 /// <summary>  

00248                 /// 获取或设置参数值  

00249                 /// </summary>  

00250                 public string Value 

00251                

00252                     get 

00253                    

00254                         return mValue

00255                    

00256                     set 

00257                    

00258                         mValue = value




00259                    

00260                

00261                 private  ElementType mElement = ElementType . None

00262                 /// <summary>  

00263                 /// 获取或设置参数值是否参数名称  

00264                 /// </summary>  

00265                 public  ElementType Element 

00266                

00267                     get 

00268                    

00269                         return mElement

00270                    

00271                     set 

00272                    

00273                         mElement = value

00274                    

00275                

00276            

00277             public class ParameterCollection : System . Collections . CollectionBase  

00278            

00279                 public Parameter this [ int index ]   

00280                

00281                     get   

00282                    

00283                         return ( ( Parameter ) List [ index ] ); 

00284                    

00285                     set   

00286                    

00287                         List [ index ] = value

00288                    

00289                

00290      

00291                 public int Add ( Parameter value )   

00292                

00293                     return ( List . Add ( value ) ); 

00294                

00295      

00296                 public int IndexOf ( Parameter value )   

00297                

00298                     return ( List . IndexOf ( value ) ); 

00299                

00300      

00301                 public void Insert ( int index , Parameter value )   

00302                

00303                     List . Insert ( index , value ); 

00304                

00305      

00306                 public void Remove ( Parameter value )   

00307                

00308                  

00309                     List . Remove ( value ); 

00310                

00311      

00312                 public bool Contains ( Parameter value )   

00313                

00314                     // If value is not of type Int16, this will return false.  

00315                     return ( List . Contains ( value ) ); 

00316                

00317      

00318            

00319             /// <summary>



 

00320             /// 返回值接收元素描述类  

00321             /// </summary>  

00322             public class ReturnElement 

00323            

00324                 /// <summary>  

00325                 /// 构造对象  

00326                 /// </summary>  

00327                 /// <param name="id">接收值的元素ID</param>  

00328                 /// <param name="key">对应值的键值</param>  

00329                 public ReturnElement ( string id , string key

00330                

00331                     ID = id

00332                     Key = key

00333                

00334                 private string mID

00335                 /// <summary>  

00336                 /// 获取或设置元素ID  

00337                 /// </summary>  

00338                 public string ID 

00339                

00340                     get 

00341                    

00342                         return mID

00343                    

00344                     set 

00345                    

00346                         mID = value

00347                    

00348                

00349                 private string mKey

00350                 /// <summary>  

00351                 /// 获取或设置对应值的键值  

00352                 /// </summary>  

00353                 public string Key 

00354                

00355                     get 

00356                    

00357                         return mKey

00358                    

00359                     set 

00360                    

00361                         mKey = value

00362                    

00363                

00364                 /// <summary>  

00365                 /// 获取操作脚本  

00366                 /// </summary>  

00367                 /// <returns>string</returns>  

00368                 public string GetScript ( string parent

00369                

00370                     return parent +"document.all(' "+ID +" ').value=" + parent +"__AnalyseString(' "+Key +"  

                             ',getvalue);" ; 

00371                

00372            

00373             public class ReturnElementCollections : System . Collections . CollectionBase 

00374            

00375                 public ReturnElement this [ int index ]   

00376                

00377                     get   

00378                    

00379                         return ( ( ReturnElement ) List [ index ] ); 

00380                    




00381                     set   

00382                    

00383                         List [ index ] = value

00384                    

00385                

00386      

00387                 public int Add ( ReturnElement value )   

00388                

00389                     return ( List . Add ( value ) ); 

00390                

00391      

00392                 public int IndexOf ( ReturnElement value )   

00393                

00394                     return ( List . IndexOf ( value ) ); 

00395                

00396      

00397                 public void Insert ( int index , ReturnElement value )   

00398                

00399                     List . Insert ( index , value ); 

00400                

00401      

00402                 public void Remove ( ReturnElement value )   

00403                

00404                  

00405                     List . Remove ( value ); 

00406                

00407      

00408                 public bool Contains ( ReturnElement value )   

00409                

00410                     // If value is not of type Int16, this will return false.  

00411                     return ( List . Contains ( value ) ); 

00412                

00413            

00414             #endregion  

00415    


下载例子和相关源码

posted on 2006-05-12 13:32  henry  阅读(2481)  评论(8编辑  收藏  举报

导航