GridSettingManager.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. /*******************************************************************************
  2. * Copyright(c) 2012 dongke All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:GridSettingManager.cs
  5. * 2.功能描述:提供DataGridView控件相关设定的保存和取得的管理
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 欧阳涛 2012/06/07 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Data;
  12. using System.IO;
  13. using System.Windows.Forms;
  14. namespace Dongke.IBOSS.PRD.Basics.Library
  15. {
  16. /// <summary>
  17. /// 提供DataGridView控件相关设定的保存和取得的管理
  18. /// </summary>
  19. public static class GridSettingManager
  20. {
  21. #region 常量定义
  22. private static DataTable _gridSetting = new DataTable();
  23. #endregion
  24. #region 属性
  25. /// <summary>
  26. /// 帐套代码
  27. /// </summary>
  28. public static string AccountCode
  29. {
  30. get;
  31. set;
  32. }
  33. /// <summary>
  34. /// 用户
  35. /// </summary>
  36. public static string UserCode
  37. {
  38. get;
  39. set;
  40. }
  41. #endregion
  42. #region 构造函数
  43. static GridSettingManager()
  44. {
  45. _gridSetting.TableName = "GridSetting";
  46. DataColumn[] gridColumns = new DataColumn[]
  47. {
  48. new DataColumn("ItemName", typeof(string)),
  49. new DataColumn("DispWidth", typeof(int)),
  50. new DataColumn("DispNo", typeof(int))
  51. };
  52. _gridSetting.Columns.AddRange(gridColumns);
  53. }
  54. #endregion
  55. #region 公开方法/属性
  56. /// <summary>
  57. /// 从文件中恢复DataGridView的设定
  58. /// </summary>
  59. /// <param name="grid"></param>
  60. /// <param name="gridName"></param>
  61. /// <returns></returns>
  62. public static bool InitializeGridSetting(DataGridView grid, string gridName)
  63. {
  64. try
  65. {
  66. if (grid == null || string.IsNullOrEmpty(gridName))
  67. {
  68. return false;
  69. }
  70. lock (_gridSetting)
  71. {
  72. if (!GetGridSettingData(gridName))
  73. {
  74. return false;
  75. }
  76. if (_gridSetting == null
  77. || _gridSetting.Rows.Count == 0
  78. //|| _gridSetting.Rows.Count != grid.Columns.Count
  79. )
  80. {
  81. return false;
  82. }
  83. string columnName = string.Empty;
  84. //foreach (DataRow row in _gridSetting.Rows)
  85. //{
  86. // columnName = (string)row["ItemName"];
  87. // if (string.IsNullOrEmpty(columnName))
  88. // {
  89. // return false;
  90. // }
  91. // if (!grid.Columns.Contains(columnName))
  92. // {
  93. // return false;
  94. // }
  95. //}
  96. int gridColumnDispNo = 0;
  97. DataGridViewColumn gridColumn = null;
  98. _gridSetting.DefaultView.Sort = "DispNo";
  99. //_gridSetting = _gridSetting.DefaultView.ToTable();
  100. //foreach (DataRow row in _gridSetting.Rows)
  101. foreach (DataRowView row in _gridSetting.DefaultView)
  102. {
  103. columnName = (string)row["ItemName"];
  104. if (string.IsNullOrEmpty(columnName) || !grid.Columns.Contains(columnName))
  105. {
  106. continue;
  107. }
  108. gridColumn = grid.Columns[columnName];
  109. //gridColumnDispNo = (int)row["DispNo"];
  110. if (gridColumn.DisplayIndex != gridColumnDispNo)
  111. {
  112. gridColumn.DisplayIndex = gridColumnDispNo;
  113. }
  114. gridColumn.Width = (int)row["DispWidth"];
  115. gridColumnDispNo++;
  116. }
  117. }
  118. return true;
  119. }
  120. catch (Exception ex)
  121. {
  122. OutputLog.Trace(LogPriority.Error, "GridSettingManager",
  123. "InitializeGridSetting()", ex.ToString());
  124. return false;
  125. //throw ex;
  126. }
  127. }
  128. /// <summary>
  129. /// DataGridView设定文件保存
  130. /// </summary>
  131. /// <param name="grid"></param>
  132. /// <param name="gridName"></param>
  133. /// <returns></returns>
  134. public static bool SaveGridSetting(DataGridView grid, string gridName)
  135. {
  136. try
  137. {
  138. if (grid == null || string.IsNullOrEmpty(gridName))
  139. {
  140. return false;
  141. }
  142. lock (_gridSetting)
  143. {
  144. _gridSetting.Clear();
  145. DataRow newRow = null;
  146. foreach (DataGridViewColumn column in grid.Columns)
  147. {
  148. newRow = _gridSetting.NewRow();
  149. newRow["ItemName"] = column.Name;
  150. newRow["DispWidth"] = column.Width;
  151. newRow["DispNo"] = column.DisplayIndex;
  152. _gridSetting.Rows.Add(newRow);
  153. }
  154. if (!Directory.Exists(LocalPath.GridSettingRoot))
  155. {
  156. Directory.CreateDirectory(LocalPath.GridSettingRoot);
  157. }
  158. string gridSettingFileName = GetGridSettingFileName(gridName);
  159. _gridSetting.WriteXml(gridSettingFileName, XmlWriteMode.WriteSchema);
  160. }
  161. return true;
  162. }
  163. catch (Exception ex)
  164. {
  165. OutputLog.Trace(LogPriority.Error, "GridSettingManager",
  166. "SaveGridSetting()", ex.ToString());
  167. return false;
  168. //throw ex;
  169. }
  170. }
  171. #endregion
  172. #region 私有方法/函数
  173. /// <summary>
  174. /// 根据DataGridView名称取得设定的数据
  175. /// </summary>
  176. /// <param name="gridName">DataGridView名称</param>
  177. /// <returns>
  178. /// True:取得成功
  179. /// False:取得失败
  180. /// </returns>
  181. private static bool GetGridSettingData(string gridName)
  182. {
  183. try
  184. {
  185. string gridSettingFileName = GetGridSettingFileName(gridName);
  186. if (File.Exists(gridSettingFileName))
  187. {
  188. _gridSetting.Clear();
  189. _gridSetting.ReadXml(gridSettingFileName);
  190. return true;
  191. }
  192. else
  193. {
  194. return false;
  195. }
  196. }
  197. catch (Exception ex)
  198. {
  199. throw ex;
  200. }
  201. }
  202. /// <summary>
  203. /// DataGridView设定保存的文件名的取得
  204. /// </summary>
  205. /// <param name="gridName">DataGridView名称</param>
  206. /// <returns>文件名</returns>
  207. private static string GetGridSettingFileName(string gridName)
  208. {
  209. string sha1GridName = Encryption.GetSHA1String(gridName);
  210. string sha1UserCode = Encryption.GetSHA1String(UserCode);
  211. return string.Format(LocalPath.GridSettingFileName,
  212. sha1GridName,
  213. sha1UserCode);
  214. }
  215. #endregion
  216. }
  217. }