让ASP.NET简便使用SCRIPT

From upnb游本网--笔记本电脑知识库(笔记本wiki)--您身边的电脑词典

Jump to: navigation, search

    在开发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 }


参考资料

相关条目
编程 ASP
外部链接
Personal tools
upnb RSS | 常见问题 | 服务条款 | 隐私权政策 | 合作与广告 | 关于我们
Copyright©2003--2007 upnb.com