WEB开发网
开发学院WEB开发ASP.NET 让ASP.NET简便使用SCRIPT 阅读

让ASP.NET简便使用SCRIPT

 2006-05-13 17:06:22 来源:WEB开发网   
核心提示:在开发asp.net应用程序过程中编写Script是件很烦人的事情,其实我们可以把常用的Script装成相应的.NET组件在服务端调用,这样可以大大简化Script的编写还提高的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   }

下载例子和相关源码

Tags:ASP NET 简便

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接