/******************************************************************************* * Copyright(c) 2012 dongke All rights reserved. / Confidential * 类的信息: * 1.程序名称:GridSettingManager.cs * 2.功能描述:提供DataGridView控件相关设定的保存和取得的管理 * 编辑履历: * 作者 日期 版本 修改内容 * 欧阳涛 2012/06/07 1.00 新建 *******************************************************************************/ using System; using System.Data; using System.IO; using System.Windows.Forms; namespace Dongke.IBOSS.PRD.Basics.Library { /// /// 提供DataGridView控件相关设定的保存和取得的管理 /// public static class GridSettingManager { #region 常量定义 private static DataTable _gridSetting = new DataTable(); #endregion #region 属性 /// /// 帐套代码 /// public static string AccountCode { get; set; } /// /// 用户 /// public static string UserCode { get; set; } #endregion #region 构造函数 static GridSettingManager() { _gridSetting.TableName = "GridSetting"; DataColumn[] gridColumns = new DataColumn[] { new DataColumn("ItemName", typeof(string)), new DataColumn("DispWidth", typeof(int)), new DataColumn("DispNo", typeof(int)) }; _gridSetting.Columns.AddRange(gridColumns); } #endregion #region 公开方法/属性 /// /// 从文件中恢复DataGridView的设定 /// /// /// /// public static bool InitializeGridSetting(DataGridView grid, string gridName) { try { if (grid == null || string.IsNullOrEmpty(gridName)) { return false; } lock (_gridSetting) { if (!GetGridSettingData(gridName)) { return false; } if (_gridSetting == null || _gridSetting.Rows.Count == 0 //|| _gridSetting.Rows.Count != grid.Columns.Count ) { return false; } string columnName = string.Empty; //foreach (DataRow row in _gridSetting.Rows) //{ // columnName = (string)row["ItemName"]; // if (string.IsNullOrEmpty(columnName)) // { // return false; // } // if (!grid.Columns.Contains(columnName)) // { // return false; // } //} int gridColumnDispNo = 0; DataGridViewColumn gridColumn = null; _gridSetting.DefaultView.Sort = "DispNo"; //_gridSetting = _gridSetting.DefaultView.ToTable(); //foreach (DataRow row in _gridSetting.Rows) foreach (DataRowView row in _gridSetting.DefaultView) { columnName = (string)row["ItemName"]; if (string.IsNullOrEmpty(columnName) || !grid.Columns.Contains(columnName)) { continue; } gridColumn = grid.Columns[columnName]; //gridColumnDispNo = (int)row["DispNo"]; if (gridColumn.DisplayIndex != gridColumnDispNo) { gridColumn.DisplayIndex = gridColumnDispNo; } gridColumn.Width = (int)row["DispWidth"]; gridColumnDispNo++; } } return true; } catch (Exception ex) { OutputLog.Trace(LogPriority.Error, "GridSettingManager", "InitializeGridSetting()", ex.ToString()); return false; //throw ex; } } /// /// DataGridView设定文件保存 /// /// /// /// public static bool SaveGridSetting(DataGridView grid, string gridName) { try { if (grid == null || string.IsNullOrEmpty(gridName)) { return false; } lock (_gridSetting) { _gridSetting.Clear(); DataRow newRow = null; foreach (DataGridViewColumn column in grid.Columns) { newRow = _gridSetting.NewRow(); newRow["ItemName"] = column.Name; newRow["DispWidth"] = column.Width; newRow["DispNo"] = column.DisplayIndex; _gridSetting.Rows.Add(newRow); } if (!Directory.Exists(LocalPath.GridSettingRoot)) { Directory.CreateDirectory(LocalPath.GridSettingRoot); } string gridSettingFileName = GetGridSettingFileName(gridName); _gridSetting.WriteXml(gridSettingFileName, XmlWriteMode.WriteSchema); } return true; } catch (Exception ex) { OutputLog.Trace(LogPriority.Error, "GridSettingManager", "SaveGridSetting()", ex.ToString()); return false; //throw ex; } } #endregion #region 私有方法/函数 /// /// 根据DataGridView名称取得设定的数据 /// /// DataGridView名称 /// /// True:取得成功 /// False:取得失败 /// private static bool GetGridSettingData(string gridName) { try { string gridSettingFileName = GetGridSettingFileName(gridName); if (File.Exists(gridSettingFileName)) { _gridSetting.Clear(); _gridSetting.ReadXml(gridSettingFileName); return true; } else { return false; } } catch (Exception ex) { throw ex; } } /// /// DataGridView设定保存的文件名的取得 /// /// DataGridView名称 /// 文件名 private static string GetGridSettingFileName(string gridName) { string sha1GridName = Encryption.GetSHA1String(gridName); string sha1UserCode = Encryption.GetSHA1String(UserCode); return string.Format(LocalPath.GridSettingFileName, sha1GridName, sha1UserCode); } #endregion } }