宜昌华友成品库管理软件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

292 lines
10 KiB

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;
/// <summary>
/// 构造函数
/// </summary>
public CONFIG()
{
InitializeComponent();
}
//加载窗体
private void CONFIG_Load(object sender, EventArgs e)
{
//加载App数据
LoadAppData();
}
#region ------App
/// <summary>
/// 加载数据
/// </summary>
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);
}
}
/// <summary>
/// 添加配置信息
/// </summary>
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();
}
/// <summary>
/// 更新配置信息
/// </summary>
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();
}
}
/// <summary>
/// 删除配置信息
/// </summary>
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
/// <summary>
/// 更改SqlMap选项
/// </summary>
private void cmbSqlMap_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.cmbSqlMap.SelectedItem == null)
return;
//加载SqlMap文件
this.LoadMapData(this.cmbSqlMap.Text);
}
/// <summary>
/// 加载Map数据
/// </summary>
private void LoadMapData(string MapFileName)
{
xmlDocMap = new SiaSun.LMS.Common.XmlFiles(MapFileName);
if (xmlDocMap != null)
{
XmlNodeList listNode = xmlDocMap.ChildNodes;
if (listNode.Cast<XmlNode>().Count(r => r.Name == "sqlMapConfig") > 0)
{
XmlNode nodeRoot = listNode.Cast<XmlNode>().First(r => r.Name == "sqlMapConfig");
listNode = nodeRoot.ChildNodes;
if (listNode.Cast<XmlNode>().Count(r => r.Name == "database") > 0)
{
//数据访问提供程序类型
XmlNode nodeDataBase = listNode.Cast<XmlNode>().First(r => r.Name == "database");
listNode = nodeDataBase.ChildNodes;
if (listNode.Cast<XmlNode>().Count(r => r.Name == "provider") > 0)
{
//数据访问提供程序
XmlNode nodeProvider = listNode.Cast<XmlNode>().First(r => r.Name == "provider");
if (nodeProvider != null)
{
cmbProvider.Text = nodeProvider.Attributes["name"].InnerText;
}
}
//连接字符串
if (listNode.Cast<XmlNode>().Count(r => r.Name == "dataSource") > 0)
{
XmlNode nodeSource = listNode.Cast<XmlNode>().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<XmlNode>().Count(r => r.Name == "sqlMapConfig") > 0)
{
XmlNode nodeRoot = listNode.Cast<XmlNode>().First(r => r.Name == "sqlMapConfig");
listNode = nodeRoot.ChildNodes;
if (listNode.Cast<XmlNode>().Count(r => r.Name == "database") > 0)
{
//数据访问提供程序类型
XmlNode nodeDataBase = listNode.Cast<XmlNode>().First(r => r.Name == "database");
listNode = nodeDataBase.ChildNodes;
if (listNode.Cast<XmlNode>().Count(r => r.Name == "provider") > 0)
{
//数据访问提供程序
XmlNode nodeProvider = listNode.Cast<XmlNode>().First(r => r.Name == "provider");
if (nodeProvider != null)
{
nodeProvider.Attributes["name"].InnerText = cmbProvider.Text;
}
}
//连接字符串
if (listNode.Cast<XmlNode>().Count(r => r.Name == "dataSource") > 0)
{
XmlNode nodeSource = listNode.Cast<XmlNode>().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
}
}