/// <summary> /// 加载配置文件,默认路径config.xml /// </summary> private void Load() { dataGridStyles = new Dictionary<string, DataGridStyle>(); xmlDoc = new XmlDocument(); if (File.Exists(filePath)) { xmlDoc.Load(filePath); XmlNode node = xmlDoc.SelectSingleNode("Config/DataGridViews"); XmlNodeList nodeList = node.SelectNodes("DataGridView"); XmlNodeList columnNodes; ColumnStyle columnStyle; DataGridStyle dataGridStyle; int index; foreach (XmlNode _node in nodeList) { dataGridStyle = new DataGridStyle(); dataGridStyle.TableName = _node.Attributes["tablename"].Value.ToString(); columnNodes = _node.ChildNodes; index = 0; foreach (XmlNode columnNode in columnNodes) { columnStyle = new ColumnStyle(); columnStyle.Name = columnNode.Attributes["name"].Value; columnStyle.DisplayName = columnNode.Attributes["displayname"].Value; columnStyle.Width = Convert.ToUInt16(columnNode.Attributes["width"].Value); columnStyle.Visible = Convert.ToBoolean(columnNode.Attributes["visible"].Value); columnStyle.Alignment = (DataGridViewContentAlignment)Convert.ToInt32(columnNode.Attributes["alignment"].Value); if (columnNode.Attributes["show"] != null) columnStyle.Show = Convert.ToBoolean(columnNode.Attributes["show"].Value); else columnStyle.Show = true; columnStyle.Index = index; index++; if (!dataGridStyle.ColumnStyles.ContainsKey(columnStyle.Name)) dataGridStyle.ColumnStyles.Add(columnStyle.Name, columnStyle); else dataGridStyle.ColumnStyles[columnStyle.Name] = columnStyle; } dataGridStyles.Add(dataGridStyle.TableName, dataGridStyle); } } else CreateConfig(); }
/// <summary>删除失踪的列DevExpress</summary> private void DeleteMissColumn(DataGridStyle dataGridStyle, DevExpress.XtraGrid.Views.Grid.GridView gridView) { Dictionary<string, string> dict = new Dictionary<string, string>(); foreach (DevExpress.XtraGrid.Columns.GridColumn column in gridView.Columns) { if (dataGridStyle.ColumnStyles.ContainsKey(column.Name)) dict.Add(column.Name, column.Name); } string[] keys = new string[dataGridStyle.ColumnStyles.Count]; dataGridStyle.ColumnStyles.Keys.CopyTo(keys, 0); for (int i = keys.Length - 1; i >= 0; i--) { if (!dict.ContainsKey(keys[i])) dataGridStyle.ColumnStyles.Remove(keys[i]); } int index = 0; foreach (string key in dataGridStyle.ColumnStyles.Keys) { dataGridStyle.ColumnStyles[key].Index = index; index++; } }
/// 保存新的表格样式DevExpress /// </summary> /// <param name="tableName"></param> /// <param name="gridView"></param> private void SaveNewGridStyle(string tableName, DevExpress.XtraGrid.Views.Grid.GridView gridView) { ColumnStyle columnStyle; DataGridStyle dataGridStyle = new DataGridStyle(); dataGridStyle.TableName = tableName; foreach (DevExpress.XtraGrid.Columns.GridColumn column in gridView.Columns) { columnStyle = GetColumnStyle(column); dataGridStyle.ColumnStyles.Add(columnStyle.Name, columnStyle); } SaveGridStyle(dataGridStyle); }
private XmlElement GetDataGridViewElement(DataGridStyle dataGridStyle) { XmlElement element = xmlDoc.CreateElement("DataGridView"); element.SetAttribute("tablename", dataGridStyle.TableName); XmlElement child; ColumnStyle column; foreach (string key in dataGridStyle.ColumnStyles.Keys) { column = dataGridStyle.ColumnStyles[key]; child = xmlDoc.CreateElement("ColumnStyle"); child.SetAttribute("name", column.Name); child.SetAttribute("displayname", column.DisplayName); child.SetAttribute("width", column.Width.ToString()); child.SetAttribute("visible", column.Visible.ToString()); child.SetAttribute("alignment", ((int)column.Alignment).ToString()); child.SetAttribute("show", column.Show.ToString()); element.AppendChild(child); } return element; }
/// <summary> /// 保存或更新样式 /// </summary> /// <param name="dataGridStyle">表样式类</param> public void SaveGridStyle(DataGridStyle dataGridStyle) { if (!dataGridStyles.ContainsKey(dataGridStyle.TableName)) dataGridStyles.Add(dataGridStyle.TableName, dataGridStyle); else dataGridStyles[dataGridStyle.TableName] = dataGridStyle; XmlElement element = GetDataGridViewElement(dataGridStyle); XmlNode node = xmlDoc.SelectSingleNode("Config/DataGridViews"); string tablename; bool isReplaced = false; foreach (XmlNode _node in node.ChildNodes) { tablename = _node.Attributes["tablename"].Value; if (string.Compare(tablename, dataGridStyle.TableName,true)==0) { node.ReplaceChild(element, _node); isReplaced = true; break; } } if (!isReplaced) node.AppendChild(element); xmlDoc.Save(filePath); }
/// <summary> /// 保存或更新表格样式 /// </summary> /// <param name="tableName"></param> /// <param name="styleGridView">样式表格控件</param> public void SaveGridStyle(string tableName, DataGridView styleGridView) { DataGridStyle dataGridStyle = new DataGridStyle(); dataGridStyle.TableName = tableName; ColumnStyle columnStyle; int index = 0; foreach (DataGridViewRow dr in styleGridView.Rows) { columnStyle = new ColumnStyle(); columnStyle.Name = dr.Cells["name"].Value.ToString(); columnStyle.DisplayName = dr.Cells["列名"].Value.ToString(); columnStyle.Width = Convert.ToUInt16(dr.Cells["列宽"].Value); columnStyle.Visible = Convert.ToBoolean(dr.Cells["可见性"].Value); columnStyle.Alignment = GetAlignment(dr.Cells["对齐方式"].Value.ToString()); columnStyle.Show = dr.Visible; columnStyle.Index = index; index++; dataGridStyle.ColumnStyles.Add(columnStyle.Name, columnStyle); } SaveGridStyle(dataGridStyle); }