PageHelper.cs 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. using System;
  2. using System.Web;
  3. using System.Web.UI;
  4. using System.Web.UI.WebControls;
  5. using System.Web.UI.HtmlControls;
  6. namespace Ant.Service.Utilities
  7. {
  8. public class PageHelper
  9. {
  10. #region 控件状态设置
  11. /// <summary>
  12. /// 锁定页面上的一些组件
  13. /// </summary>
  14. /// <param name="page"></param>
  15. /// <param name="obj">不需锁定的控件</param>
  16. public static void LockPage(Page page, object[] obj)
  17. {
  18. System.Web.UI.Control htmlForm = null;
  19. foreach (System.Web.UI.Control ctl in page.Controls)
  20. {
  21. if (ctl is HtmlForm)
  22. {
  23. htmlForm = ctl;
  24. break;
  25. }
  26. }
  27. //foreach (Control ctl in page.Controls[1].Controls)
  28. foreach (System.Web.UI.Control ctl in htmlForm.Controls)
  29. {
  30. if (IsContains(obj, ctl) == false)
  31. {
  32. //锁定
  33. LockControl(page, ctl);
  34. }
  35. else
  36. {
  37. //解除锁定
  38. UnLockControl(page, ctl);
  39. }
  40. }
  41. }
  42. /// <summary>
  43. /// 解除锁定页面上的一些组件
  44. /// </summary>
  45. /// <param name="page"></param>
  46. /// <param name="obj">继续保持锁定的控件</param>
  47. public static void UnLockPage(Page page, object[] obj)
  48. {
  49. System.Web.UI.Control htmlForm = null;
  50. foreach (System.Web.UI.Control ctl in page.Controls)
  51. {
  52. if (ctl is HtmlForm)
  53. {
  54. htmlForm = ctl;
  55. break;
  56. }
  57. }
  58. //foreach (Control ctl in page.Controls[1].Controls)
  59. foreach (System.Web.UI.Control ctl in htmlForm.Controls)
  60. {
  61. if (IsContains(obj, ctl) == false)
  62. {
  63. //解除锁定
  64. UnLockControl(page, ctl);
  65. }
  66. else
  67. {
  68. //锁定
  69. LockControl(page, ctl);
  70. }
  71. }
  72. }
  73. /// <summary>
  74. /// 禁用控件
  75. /// </summary>
  76. /// <param name="page"></param>
  77. /// <param name="ctl"></param>
  78. private static void LockControl(Page page, System.Web.UI.Control ctl)
  79. {
  80. //WebControl
  81. if (ctl is Button || ctl is CheckBox || ctl is HyperLink || ctl is LinkButton
  82. || ctl is ListControl || ctl is TextBox)
  83. {
  84. ((WebControl)ctl).Enabled = false;
  85. #region 多行文本框不能禁用,应设为只读,不然滚动条不能使用
  86. if (ctl is TextBox)
  87. {
  88. if (((TextBox)ctl).TextMode == TextBoxMode.MultiLine)
  89. {
  90. ((TextBox)ctl).Enabled = true;
  91. ((TextBox)ctl).ReadOnly = true;
  92. }
  93. }
  94. #endregion
  95. #region 时间控件禁用时不显示图片
  96. #endregion
  97. }
  98. //HtmlControl
  99. if (ctl is HtmlInputFile)
  100. {
  101. ((HtmlInputFile)ctl).Disabled = true;
  102. }
  103. }
  104. /// <summary>
  105. /// 开放控件
  106. /// </summary>
  107. /// <param name="page"></param>
  108. /// <param name="ctl"></param>
  109. private static void UnLockControl(Page page, System.Web.UI.Control ctl)
  110. {
  111. //WebControl
  112. if (ctl is Button || ctl is CheckBox || ctl is HyperLink || ctl is LinkButton
  113. || ctl is ListControl || ctl is TextBox)
  114. {
  115. ((WebControl)ctl).Enabled = true;
  116. //文本框去掉只读属性
  117. if (ctl is TextBox)
  118. {
  119. ((TextBox)ctl).ReadOnly = false;
  120. }
  121. ////时间输入文本框不禁用时显示按钮
  122. //if (ctl is WebDateTimeEdit)
  123. //{
  124. // ((WebDateTimeEdit)ctl).SpinButtons.Display = ButtonDisplay.OnRight;
  125. //}
  126. ////时间选择文本框不禁用时显示按钮
  127. //if (ctl is WebDateChooser)
  128. //{
  129. // page.ClientScript.RegisterStartupScript(typeof(string), "Display" + ctl.ClientID + "Image", "<script language=javascript>" +
  130. // "document.getElementById('" + ctl.ClientID + "_img" + "').style.display='';</script>");
  131. //}
  132. }
  133. //HtmlControl
  134. if (ctl is HtmlInputFile)
  135. {
  136. ((HtmlInputFile)ctl).Disabled = false;
  137. }
  138. }
  139. /// <summary>
  140. /// 数组中是否包含当前控件
  141. /// </summary>
  142. /// <param name="obj"></param>
  143. /// <param name="ctl"></param>
  144. /// <returns></returns>
  145. private static bool IsContains(object[] obj, System.Web.UI.Control ctl)
  146. {
  147. foreach (System.Web.UI.Control c in obj)
  148. {
  149. if (c.ID == ctl.ID)
  150. {
  151. return true;
  152. }
  153. }
  154. return false;
  155. }
  156. #endregion
  157. #region 页面处理其它辅助方法
  158. /// <summary>
  159. /// 得到当前页对象实例
  160. /// </summary>
  161. /// <returns></returns>
  162. public static Page GetCurrentPage()
  163. {
  164. return (Page)HttpContext.Current.Handler;
  165. }
  166. /// <summary>
  167. /// 从System.Web.HttpRequest的Url中获取所调用的页面名称
  168. /// </summary>
  169. /// <returns>页面名称</returns>
  170. public static string GetPageName()
  171. {
  172. int start = 0;
  173. int end = 0;
  174. string Url = HttpContext.Current.Request.RawUrl;
  175. start = Url.LastIndexOf("/") + 1;
  176. end = Url.IndexOf("?");
  177. if (end <= 0)
  178. {
  179. return Url.Substring(start, Url.Length - start);
  180. }
  181. else
  182. {
  183. return Url.Substring(start, end - start);
  184. }
  185. }
  186. /// <summary>
  187. /// 读取QueryString值
  188. /// </summary>
  189. /// <param name="queryStringName">QueryString名称</param>
  190. /// <returns>QueryString值</returns>
  191. public static string GetQueryString(string queryStringName)
  192. {
  193. if ((HttpContext.Current.Request.QueryString[queryStringName] != null) &&
  194. (HttpContext.Current.Request.QueryString[queryStringName] != "undefined"))
  195. {
  196. return HttpContext.Current.Request.QueryString[queryStringName].Trim();
  197. }
  198. else
  199. {
  200. return "";
  201. }
  202. }
  203. /// <summary>
  204. /// 页面跳转
  205. /// </summary>
  206. /// <param name="url">URL地址</param>
  207. public void Redirect(string url)
  208. {
  209. Page page = GetCurrentPage();
  210. page.Response.Redirect(url);
  211. }
  212. /// <summary>
  213. /// 获取当前请求页面相对于根目录的层级
  214. /// </summary>
  215. /// <returns></returns>
  216. public static string GetRelativeLevel()
  217. {
  218. string ApplicationPath = HttpContext.Current.Request.ApplicationPath;
  219. if (ApplicationPath.Trim() == "/")
  220. {
  221. ApplicationPath = "";
  222. }
  223. int i = ApplicationPath == "" ? 1 : 2;
  224. return "";//Nandasoft.Helper.NDHelperString.Repeat("../", Nandasoft.Helper.NDHelperString.RepeatTime(HttpContext.Current.Request.Path, "/") - i);
  225. }
  226. /// <summary>
  227. /// 写javascript脚本
  228. /// </summary>
  229. /// <param name="script">脚本内容</param>
  230. public static void WriteScript(string script)
  231. {
  232. Page page = GetCurrentPage();
  233. // NDGridViewScriptFirst(page.Form.Controls, page);
  234. //ScriptManager.RegisterStartupScript(page, page.GetType(), System.Guid.NewGuid().ToString(), script, true);
  235. }
  236. //private void NDGridViewScriptFirst(ControlCollection ctls, Page page)
  237. //{
  238. // foreach (Control ctl in ctls)
  239. // {
  240. // if (ctl is NDGridView)
  241. // {
  242. // NDGridView ndgv = (NDGridView)ctl;
  243. // ScriptManager.RegisterStartupScript(page, page.GetType(), ndgv.ClientScriptKey, ndgv.ClientScriptName, true);
  244. // }
  245. // else
  246. // {
  247. // NDGridViewScriptFirst(ctl.Controls, page);
  248. // }
  249. // }
  250. //}
  251. /// <summary>
  252. /// 返回客户端浏览器版本
  253. /// 如果是IE类型,返回版本数字
  254. /// 如果不是IE类型,返回-1
  255. /// </summary>
  256. /// <returns>一位数字版本号</returns>
  257. public static int GetClientBrowserVersion()
  258. {
  259. string USER_AGENT = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"];
  260. if (USER_AGENT.IndexOf("MSIE") < 0) return -1;
  261. string version = USER_AGENT.Substring(USER_AGENT.IndexOf("MSIE") + 5, 1);
  262. if (!Utility.IsInt(version)) return -1;
  263. return Convert.ToInt32(version);
  264. }
  265. #endregion
  266. }
  267. }