/*******************************************************************************
* 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
}
}