让ASP.NET简便使用SCRIPT
天下维客,你可以修改的网络知识库
在开发ASP.NET应用程序过程中编写Script是件很烦人的事情,其实我们可以把常用的Script装成相应的.NET组件在服务端调用,这样可以大大简化Script的编写还提高的Script的重用.
以下是常用的打开模式窗体并获取返回值的类调用,实际上可以给设置多个参数传入和不同控件获取不同返回值的结果.
定义打开窗体并设置返回值脚本类.
以下是常用的打开模式窗体并获取返回值的类调用,实际上可以给设置多个参数传入和不同控件获取不同返回值的结果.
定义打开窗体并设置返回值脚本类.
HFSoft.Web.Scripts.ShowModalDialog dialog=new HFSoft.Web.Scripts.ShowModalDialog( <BR>XXX.Units.Config.WebBoot+"Appunit/WindowOpenDialog.aspx", <BR>FrmFailureLogSearch.PageURI()); <BR>dialog.Height=400; <BR>dialog.Width=600; <BR>dialog.ReturnElements.Add(new HFSoft.Web.Scripts.ReturnElement(this.txtReturn.ClientID,"ReturnString")); <BR>HFSoft.Web.Scripts.RegisterScript.RegiOnClick(cmdSearch,dialog); <BR><BR>打开窗体设置返回值的代码 <BR>HFSoft.Web.Scripts.ReturnValues returnValue=new HFSoft.Web.Scripts.ReturnValues(); <BR>returnValue.Add("ReturnString",filter); <BR>HFSoft.Web.Scripts.RegisterScript.RegiPageClient(this,"return",returnValue); <BR><BR>打开窗体类的代码(其实很多Script都可以通过这样的方式来封装). <BR><BR>00006 namespace HFSoft . Web . Scripts <BR><BR>00007 { <BR><BR>00008 /// <SUMMARY><BR><BR>00009 /// 创建打开窗体脚本类 <BR><BR>00010 /// 注意:返回值参数据接收的数据格式必须 <BR><BR>00011 /// key=value|key1=value1|..... <BR><BR>00012 /// </SUMMARY><BR><BR>00013 public class ShowModalDialog: IExecuteScript <BR><BR>00014 { <BR><BR>00015 private const string _Dialog ="window.showModalDialog({0},' ',' dialogHeight: { 1 } px; <BR><BR>dialogWidth: { 2 } px; edge: Raised; center: Yes; help: No; resizable: No; status: No; scroll: <BR><BR>Yes;');"; <BR><BR>00016 #region IExecuteScript 成员 <BR><BR>00017 private bool mParent = false; <BR><BR>00018 /// <SUMMARY><BR><BR>00019 /// 是否需要加载父指向 <BR><BR>00020 /// </SUMMARY><BR><BR>00021 public bool Parent <BR><BR>00022 { <BR><BR>00023 get <BR><BR>00024 { <BR><BR>00025 // TODO: 添加 SetElementsValue.Parent getter 实现 <BR><BR>00026 return mParent; <BR><BR>00027 } <BR><BR>00028 set <BR><BR>00029 { <BR><BR>00030 // TODO: 添加 SetElementsValue.Parent setter 实现 <BR><BR>00031 mParent = value; <BR><BR>00032 } <BR><BR>00033 } <BR><BR>00034 private string GetParent () <BR><BR>00035 { <BR><BR>00036 if ( Parent ) <BR><BR>00037 return "parent."; <BR><BR>00038 return ""; <BR><BR>00039 } <BR><BR>00040 /// <SUMMARY><BR><BR>00041 /// 构造对象 <BR><BR>00042 /// </SUMMARY><BR><BR>00043 /// <PARAM name="pageContainer">容器页</PARAM><BR><BR>00044 /// <PARAM name="openPage">具本打开的页面</PARAM><BR><BR>00045 public ShowModalDialog ( string pageContainer , string openPage ) <BR><BR>00046 { <BR><BR>00047 PageContainer = pageContainer; <BR><BR>00048 OpenPage = openPage; <BR><BR>00049 } <BR><BR>00050 public const string PageUrlTag ="pageurl"; <BR><BR>00051 /// <SUMMARY><BR><BR>00052 /// 生成脚本 <BR><BR>00053 /// </SUMMARY><BR><BR>00054 /// <RETURNS>string</RETURNS><BR><BR>00055 public string Execute () <BR><BR>00056 { <BR><BR>00057 // TODO: 添加 ShowModalDialog.Execute 实现 <BR><BR>00058 string url ="' " + PageContainer +"? pageurl ='+" + GetPage (); <BR><BR>00059 url = string . Format ( _Dialog , url , Height , Width ); <BR><BR>00060 url = GetParent () + url; <BR><BR>00061 if ( ReturnElements . Count >0) <BR><BR>00062 { <BR><BR>00063 url = "var getvalue=" + url +";if(getvalue!= null){"; <BR><BR>00064 foreach ( ReturnElement item in ReturnElements ) <BR><BR>00065 { <BR><BR>00066 url += item . GetScript ( GetParent ()); <BR><BR><BR><BR>-------------------------------------------------------------------------------- <BR><BR><BR>00067 } <BR><BR>00068 url +="}"; <BR><BR>00069 return url +";"; <BR><BR>00070 } <BR><BR>00071 return url +";"; <BR><BR>00072 } <BR><BR>00073 <BR><BR>00074 #endregion <BR><BR>00075 private string mPageContainer; <BR><BR>00076 /// <SUMMARY><BR><BR>00077 /// 获取或设置容器页(包含路径) <BR><BR>00078 /// </SUMMARY><BR><BR>00079 public string PageContainer <BR><BR>00080 { <BR><BR>00081 get <BR><BR>00082 { <BR><BR>00083 return mPageContainer; <BR><BR>00084 } <BR><BR>00085 set <BR><BR>00086 { <BR><BR>00087 mPageContainer = value; <BR><BR>00088 } <BR><BR>00089 } <BR><BR>00090 private string mOpenPage; <BR><BR>00091 /// <SUMMARY><BR><BR>00092 /// 打开的页(包含路径) <BR><BR>00093 /// </SUMMARY><BR><BR>00094 public string OpenPage <BR><BR>00095 { <BR><BR>00096 get <BR><BR>00097 { <BR><BR>00098 return mOpenPage; <BR><BR>00099 } <BR><BR>00100 set <BR><BR>00101 { <BR><BR>00102 mOpenPage = value; <BR><BR>00103 } <BR><BR>00104 } <BR><BR>00105 private int mHeight =400; <BR><BR>00106 /// <SUMMARY><BR><BR>00107 /// 获取或设置打开窗体的高度 <BR><BR>00108 /// </SUMMARY><BR><BR>00109 public int Height <BR><BR>00110 { <BR><BR>00111 get <BR><BR>00112 { <BR><BR>00113 return mHeight; <BR><BR>00114 } <BR><BR>00115 set <BR><BR>00116 { <BR><BR>00117 mHeight = value; <BR><BR>00118 } <BR><BR>00119 } <BR><BR>00120 private int mWidth =400; <BR><BR>00121 /// <SUMMARY><BR><BR>00122 /// 获取或设置打开窗体的宽度 <BR><BR>00123 /// </SUMMARY><BR><BR>00124 public int Width <BR><BR>00125 { <BR><BR>00126 get <BR><BR>00127 { <BR><BR>00128 return mWidth; <BR><BR>00129 } <BR><BR>00130 set <BR><BR>00131 {
00132 mWidth = value; <BR><BR>00133 } <BR><BR>00134 } <BR><BR>00135 private ReturnElementCollections mReturnElements = new ReturnElementCollections (); <BR><BR>00136 /// <SUMMARY><BR><BR>00137 /// 获取返回值元素集 <BR><BR>00138 /// </SUMMARY><BR><BR>00139 public ReturnElementCollections ReturnElements <BR><BR>00140 { <BR><BR>00141 get <BR><BR>00142 { <BR><BR>00143 return mReturnElements; <BR><BR>00144 } <BR><BR>00145 } <BR><BR>00146 private ParameterCollection mParameters = new ParameterCollection (); <BR><BR>00147 /// <SUMMARY><BR><BR>00148 /// 获取打开页面的参数集 <BR><BR>00149 /// </SUMMARY><BR><BR>00150 public ParameterCollection Parameters <BR><BR>00151 { <BR><BR>00152 get <BR><BR>00153 { <BR><BR>00154 return mParameters; <BR><BR>00155 } <BR><BR>00156 } <BR><BR>00157 private string GetPage () <BR><BR>00158 { <BR><BR>00159 if ( Parameters . Count ==0) <BR><BR>00160 return "' "+OpenPage+" '"; <BR><BR>00161 System . Text . StringBuilder sb = new System . Text . StringBuilder (); <BR><BR>00162 sb . Append ("' "+OpenPage+" '" ); <BR><BR>00163 string param =""; <BR><BR>00164 string parent = GetParent (); <BR><BR>00165 for ( int i =0; i < Parameters . Count; i ++) <BR><BR>00166 { <BR><BR>00167 if ( Parameters [ i ]. Element == ElementType . Element ) <BR><BR>00168 { <BR><BR>00169 param ="' " + Parameters[i].Name +" =' + " + parent +"document.all(' <BR><BR>"+Parameters[i].Value + " ').value"; <BR><BR>00170 } <BR><BR>00171 else if ( Parameters [ i ]. Element == ElementType . Select ) <BR><BR>00172 { <BR><BR>00173 param ="' " + Parameters[i].Name +" =' + " + parent +"__getSeletedButton(" + parent + <BR><BR>"document.all(' "+Parameters[i].Value + " '))"; <BR><BR>00174 } <BR><BR>00175 if ( i ==0) <BR><BR>00176 { <BR><BR>00177 sb . Append ("+' "+System.Web.HttpUtility.UrlEncode("?") +" '+" + param ); <BR><BR>00178 } <BR><BR>00179 else <BR><BR>00180 { <BR><BR>00181 sb . Append ("+' "+System.Web.HttpUtility.UrlEncode(" &") +" '+" + param ); <BR><BR>00182 } <BR><BR>00183 } <BR><BR>00184 return sb . ToString (); <BR><BR>00185 } <BR><BR>00186 <BR><BR>00187 <BR><BR>00188 <BR><BR>00189 } <BR><BR>00190 #region subClass <BR><BR>00191 public enum ElementType <BR><BR>00192 { <BR><BR>00193 None , <BR><BR>00194 Element , <BR><BR>00195 Select <BR><BR><BR><BR>-------------------------------------------------------------------------------- <BR><BR><BR>00196 } <BR><BR>00197 /// <SUMMARY><BR><BR>00198 /// 参数描述类 <BR><BR>00199 /// </SUMMARY><BR><BR>00200 public class Parameter <BR><BR>00201 { <BR><BR>00202 /// <SUMMARY><BR><BR>00203 /// 构造参数对象 <BR><BR>00204 /// </SUMMARY><BR><BR>00205 public Parameter () <BR><BR>00206 { <BR><BR>00207 } <BR><BR>00208 /// <SUMMARY><BR><BR>00209 /// 构造指定名称和值的参数对象 <BR><BR>00210 /// </SUMMARY><BR><BR>00211 /// <PARAM name="name">参数名称</PARAM><BR><BR>00212 /// <PARAM name="value">参数值</PARAM><BR><BR>00213 public Parameter ( string name , string value ) <BR><BR>00214 { <BR><BR>00215 Name = name; <BR><BR>00216 Value = value; <BR><BR>00217 } <BR><BR>00218 /// <SUMMARY><BR><BR>00219 /// 构造指定名称和值的参数对象 <BR><BR>00220 /// </SUMMARY><BR><BR>00221 /// <PARAM name="name">参数名称</PARAM><BR><BR>00222 /// <PARAM name="value">参数值</PARAM><BR><BR>00223 /// <PARAM name="iselement">值是否元素名称</PARAM><BR><BR>00224 public Parameter ( string name , string value , ElementType element ) <BR><BR>00225 { <BR><BR>00226 Name = name; <BR><BR>00227 Value = value; <BR><BR>00228 Element = element; <BR><BR>00229 } <BR><BR>00230 <BR><BR>00231 private string mName; <BR><BR>00232 /// <SUMMARY><BR><BR>00233 /// 获取或设置参数名称 <BR><BR>00234 /// </SUMMARY><BR><BR>00235 public string Name <BR><BR>00236 { <BR><BR>00237 get <BR><BR>00238 { <BR><BR>00239 return mName; <BR><BR>00240 } <BR><BR>00241 set <BR><BR>00242 { <BR><BR>00243 mName = value; <BR><BR>00244 } <BR><BR>00245 } <BR><BR>00246 private string mValue; <BR><BR>00247 /// <SUMMARY><BR><BR>00248 /// 获取或设置参数值 <BR><BR>00249 /// </SUMMARY><BR><BR>00250 public string Value <BR><BR>00251 { <BR><BR>00252 get <BR><BR>00253 { <BR><BR>00254 return mValue; <BR><BR>00255 } <BR><BR>00256 set <BR><BR>00257 { <BR><BR>00258 mValue = value; <BR>
<BR>00259 } <BR><BR>00260 } <BR><BR>00261 private ElementType mElement = ElementType . None; <BR><BR>00262 /// <SUMMARY><BR><BR>00263 /// 获取或设置参数值是否参数名称 <BR><BR>00264 /// </SUMMARY><BR><BR>00265 public ElementType Element <BR><BR>00266 { <BR><BR>00267 get <BR><BR>00268 { <BR><BR>00269 return mElement; <BR><BR>00270 } <BR><BR>00271 set <BR><BR>00272 { <BR><BR>00273 mElement = value; <BR><BR>00274 } <BR><BR>00275 } <BR><BR>00276 } <BR><BR>00277 public class ParameterCollection: System . Collections . CollectionBase <BR><BR>00278 { <BR><BR>00279 public Parameter this [ int index ] <BR><BR>00280 { <BR><BR>00281 get <BR><BR>00282 { <BR><BR>00283 return ( ( Parameter ) List [ index ] ); <BR><BR>00284 } <BR><BR>00285 set <BR><BR>00286 { <BR><BR>00287 List [ index ] = value; <BR><BR>00288 } <BR><BR>00289 } <BR><BR>00290 <BR><BR>00291 public int Add ( Parameter value ) <BR><BR>00292 { <BR><BR>00293 return ( List . Add ( value ) ); <BR><BR>00294 } <BR><BR>00295 <BR><BR>00296 public int IndexOf ( Parameter value ) <BR><BR>00297 { <BR><BR>00298 return ( List . IndexOf ( value ) ); <BR><BR>00299 } <BR><BR>00300 <BR><BR>00301 public void Insert ( int index , Parameter value ) <BR><BR>00302 { <BR><BR>00303 List . Insert ( index , value ); <BR><BR>00304 } <BR><BR>00305 <BR><BR>00306 public void Remove ( Parameter value ) <BR><BR>00307 { <BR><BR>00308 <BR><BR>00309 List . Remove ( value ); <BR><BR>00310 } <BR><BR>00311 <BR><BR>00312 public bool Contains ( Parameter value ) <BR><BR>00313 { <BR><BR>00314 // If value is not of type Int16, this will return false. <BR><BR>00315 return ( List . Contains ( value ) ); <BR><BR>00316 } <BR><BR>00317 <BR><BR>00318 } <BR><BR>00319 /// <SUMMARY><BR><BR><BR>-------------------------------------------------------------------------------- <BR><BR><BR><BR><BR>00320 /// 返回值接收元素描述类 <BR><BR>00321 /// </SUMMARY><BR><BR>00322 public class ReturnElement <BR><BR>00323 { <BR><BR>00324 /// <SUMMARY><BR><BR>00325 /// 构造对象 <BR><BR>00326 /// </SUMMARY><BR><BR>00327 /// <PARAM name="id">接收值的元素ID</PARAM><BR><BR>00328 /// <PARAM name="key">对应值的键值</PARAM><BR><BR>00329 public ReturnElement ( string id , string key ) <BR><BR>00330 { <BR><BR>00331 ID = id; <BR><BR>00332 Key = key; <BR><BR>00333 } <BR><BR>00334 private string mID; <BR><BR>00335 /// <SUMMARY><BR><BR>00336 /// 获取或设置元素ID <BR><BR>00337 /// </SUMMARY><BR><BR>00338 public string ID <BR><BR>00339 { <BR><BR>00340 get <BR><BR>00341 { <BR><BR>00342 return mID; <BR><BR>00343 } <BR><BR>00344 set <BR><BR>00345 { <BR><BR>00346 mID = value; <BR><BR>00347 } <BR><BR>00348 } <BR><BR>00349 private string mKey; <BR><BR>00350 /// <SUMMARY><BR><BR>00351 /// 获取或设置对应值的键值 <BR><BR>00352 /// </SUMMARY><BR><BR>00353 public string Key <BR><BR>00354 { <BR><BR>00355 get <BR><BR>00356 { <BR><BR>00357 return mKey; <BR><BR>00358 } <BR><BR>00359 set <BR><BR>00360 { <BR><BR>00361 mKey = value; <BR><BR>00362 } <BR><BR>00363 } <BR><BR>00364 /// <SUMMARY><BR><BR>00365 /// 获取操作脚本 <BR><BR>00366 /// </SUMMARY><BR><BR>00367 /// <RETURNS>string</RETURNS><BR><BR>00368 public string GetScript ( string parent ) <BR><BR>00369 { <BR><BR>00370 return parent +"document.all(' "+ID +" ').value=" + parent +"__AnalyseString(' "+Key +" <BR><BR>',getvalue);"; <BR><BR>00371 } <BR><BR>00372 } <BR><BR>00373 public class ReturnElementCollections: System . Collections . CollectionBase <BR><BR>00374 { <BR><BR>00375 public ReturnElement this [ int index ] <BR><BR>00376 { <BR><BR>00377 get <BR><BR>00378 { <BR><BR>00379 return ( ( ReturnElement ) List [ index ] ); <BR><BR>00380 } <BR><BR><BR><BR>-------------------------------------------------------------------------------- <BR><BR><BR>00381 set <BR><BR>00382 { <BR><BR>00383 List [ index ] = value; <BR><BR>00384 } <BR><BR>00385 } <BR><BR>00386 <BR><BR>00387 public int Add ( ReturnElement value ) <BR><BR>00388 { <BR><BR>00389 return ( List . Add ( value ) ); <BR><BR>00390 } <BR><BR>00391 <BR><BR>00392 public int IndexOf ( ReturnElement value ) <BR><BR>00393 { <BR><BR>00394 return ( List . IndexOf ( value ) ); <BR><BR>00395 } <BR><BR>00396 <BR><BR>00397 public void Insert ( int index , ReturnElement value ) <BR><BR>00398 { <BR><BR>00399 List . Insert ( index , value ); <BR><BR>00400 } <BR><BR>00401 <BR><BR>00402 public void Remove ( ReturnElement value ) <BR><BR>00403 { <BR><BR>00404 <BR><BR>00405 List . Remove ( value ); <BR><BR>00406 } <BR><BR>00407 <BR><BR>00408 public bool Contains ( ReturnElement value ) <BR><BR>00409 { <BR><BR>00410 // If value is not of type Int16, this will return false. <BR><BR>00411 return ( List . Contains ( value ) ); <BR><BR>00412 } <BR><BR>00413 } <BR><BR>00414 #endregion <BR><BR>00415 } <BR>
[编辑]


