using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; using System.IO; namespace SiaSun.LMS.WCFHost { public partial class CONFIG : Form { string strAppName = null; DataTable tableApp = null; SiaSun.LMS.Common.XmlFiles xmlDoc = null; SiaSun.LMS.Common.XmlFiles xmlDocMap = null; /// /// 构造函数 /// public CONFIG() { InitializeComponent(); } //加载窗体 private void CONFIG_Load(object sender, EventArgs e) { //加载App数据 LoadAppData(); } #region ------App /// /// 加载数据 /// private void LoadAppData() { //初始化表集合 if (tableApp == null) { tableApp = new DataTable(); tableApp.Columns.Add("key"); tableApp.Columns.Add("value"); //设置唯一约束 tableApp.Columns[0].Unique = true; } //清除数据 tableApp.Rows.Clear(); //加载数据 try { strAppName = Application.ExecutablePath.Substring(0, (Application.ExecutablePath.Length)) + ".config"; xmlDoc = new SiaSun.LMS.Common.XmlFiles(strAppName); if (xmlDoc != null) { //找到所有的添加节点 foreach (System.Xml.XmlNode node in xmlDoc.SelectNodes("/configuration/appSettings/add")) { tableApp.Rows.Add(node.Attributes[0].InnerText, node.Attributes[1].InnerText); } } //接受更改 tableApp.AcceptChanges(); //设置数据源 this.gridAPP.DataSource = tableApp; } catch (Exception ex) { MessageBox.Show( ex.Message); } } /// /// 添加配置信息 /// private void AddConfig(XmlNode nodeParent, DataRow rowApp) { //判断值类型 if (rowApp.IsNull(rowApp.Table.Columns[0]) || string.IsNullOrEmpty(rowApp[0].ToString())) { MessageBox.Show(string.Format("key名称不允许空!")); return; } XmlNode nodeAdd = nodeParent.AppendChild(xmlDoc.CreateNode(XmlNodeType.Element, "add", nodeParent.NamespaceURI)); nodeAdd.Attributes.Append(xmlDoc.CreateAttribute("key")).InnerText = rowApp[0].ToString(); nodeAdd.Attributes.Append(xmlDoc.CreateAttribute("value")).InnerText = rowApp[1].ToString(); } /// /// 更新配置信息 /// private void UpdateConfig(XmlNode nodeParent, DataRow rowApp) { //判断值类型 if (rowApp.IsNull(rowApp.Table.Columns[0]) || string.IsNullOrEmpty(rowApp[0].ToString())) { MessageBox.Show( string.Format("key名称不允许空!")); return; } XmlNode nodeFind = nodeParent.SelectSingleNode("//add[@key='" + rowApp[0].ToString() + "']"); if (nodeFind != null) { nodeFind.Attributes[1].InnerText = rowApp[1].ToString(); } } /// /// 删除配置信息 /// private void DeleteConfig(XmlNode nodeParent, DataRow rowApp) { XmlNode nodeFind = nodeParent.SelectSingleNode("//add[@key='" + rowApp[0, DataRowVersion.Original].ToString() + "']"); if (nodeFind != null) { nodeParent.RemoveChild(nodeFind); } } //保存APP信息 private void btnAppSave_Click(object sender, EventArgs e) { if (xmlDoc == null) return; //提交保存 this.gridAPP.EndEdit(); this.BindingContext[this.gridAPP.DataSource, this.gridAPP.DataMember].EndCurrentEdit(); if (MessageBox.Show("确定保存App配置信息?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) { DataTable tableChanages = tableApp.GetChanges(); if (tableApp != null) { //获得上级节点 XmlNode nodeTop = xmlDoc.FindNode("configuration/appSettings"); if (nodeTop != null) { foreach (DataRow rowApp in tableChanages.Rows) { //判断状态 if (rowApp.RowState == DataRowState.Added) //添加 { AddConfig(nodeTop, rowApp); } else if (rowApp.RowState == DataRowState.Modified) //保存更新 { UpdateConfig(nodeTop, rowApp); } else if (rowApp.RowState == DataRowState.Deleted) //删除 { DeleteConfig(nodeTop, rowApp); } } //保存更新 xmlDoc.Save(strAppName); } } } } //刷新重新加载 private void btnAppUpdate_Click(object sender, EventArgs e) { LoadAppData(); } #endregion #region ------Map /// /// 更改SqlMap选项 /// private void cmbSqlMap_SelectedIndexChanged(object sender, EventArgs e) { if (this.cmbSqlMap.SelectedItem == null) return; //加载SqlMap文件 this.LoadMapData(this.cmbSqlMap.Text); } /// /// 加载Map数据 /// private void LoadMapData(string MapFileName) { xmlDocMap = new SiaSun.LMS.Common.XmlFiles(MapFileName); if (xmlDocMap != null) { XmlNodeList listNode = xmlDocMap.ChildNodes; if (listNode.Cast().Count(r => r.Name == "sqlMapConfig") > 0) { XmlNode nodeRoot = listNode.Cast().First(r => r.Name == "sqlMapConfig"); listNode = nodeRoot.ChildNodes; if (listNode.Cast().Count(r => r.Name == "database") > 0) { //数据访问提供程序类型 XmlNode nodeDataBase = listNode.Cast().First(r => r.Name == "database"); listNode = nodeDataBase.ChildNodes; if (listNode.Cast().Count(r => r.Name == "provider") > 0) { //数据访问提供程序 XmlNode nodeProvider = listNode.Cast().First(r => r.Name == "provider"); if (nodeProvider != null) { cmbProvider.Text = nodeProvider.Attributes["name"].InnerText; } } //连接字符串 if (listNode.Cast().Count(r => r.Name == "dataSource") > 0) { XmlNode nodeSource = listNode.Cast().First(r => r.Name == "dataSource"); if (nodeSource != null) { txtConnStr.Text = nodeSource.Attributes["connectionString"].InnerText; } } } } } } //保存Map数据信息 private void btnMapSave_Click(object sender, EventArgs e) { if (xmlDocMap == null) return; if (MessageBox.Show("确定保存Map配置信息?","系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.Cancel) return; XmlNodeList listNode = xmlDocMap.ChildNodes; if (listNode.Cast().Count(r => r.Name == "sqlMapConfig") > 0) { XmlNode nodeRoot = listNode.Cast().First(r => r.Name == "sqlMapConfig"); listNode = nodeRoot.ChildNodes; if (listNode.Cast().Count(r => r.Name == "database") > 0) { //数据访问提供程序类型 XmlNode nodeDataBase = listNode.Cast().First(r => r.Name == "database"); listNode = nodeDataBase.ChildNodes; if (listNode.Cast().Count(r => r.Name == "provider") > 0) { //数据访问提供程序 XmlNode nodeProvider = listNode.Cast().First(r => r.Name == "provider"); if (nodeProvider != null) { nodeProvider.Attributes["name"].InnerText = cmbProvider.Text; } } //连接字符串 if (listNode.Cast().Count(r => r.Name == "dataSource") > 0) { XmlNode nodeSource = listNode.Cast().First(r => r.Name == "dataSource"); if (nodeSource != null) { nodeSource.Attributes["connectionString"].InnerText = txtConnStr.Text; } } //保存 this.xmlDocMap.Save(this.cmbSqlMap.Text); } } } //刷新重新加载 private void btnMapUpdate_Click(object sender, EventArgs e) { if (this.cmbSqlMap.SelectedItem == null) return; LoadMapData(this.cmbSqlMap.Text); } #endregion } }