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.
183 lines
6.0 KiB
183 lines
6.0 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Shapes;
|
|
using System.Data;
|
|
using System.Xml;
|
|
|
|
namespace SiaSun.LMS.WPFClient.SYS
|
|
{
|
|
/// <summary>
|
|
/// APP_CONFIG.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class APP_CONFIG : AvalonDock.DocumentContent
|
|
{
|
|
string strAppName = null;
|
|
DataTable tableApp = null;
|
|
SiaSun.LMS.Common.XmlFiles xmlDoc = null;
|
|
|
|
public APP_CONFIG()
|
|
{
|
|
InitializeComponent();
|
|
this.Loaded += new RoutedEventHandler(APP_CONFIG_Loaded);
|
|
}
|
|
|
|
void APP_CONFIG_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
//加载数据
|
|
LoadData();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载数据
|
|
/// </summary>
|
|
private void LoadData()
|
|
{
|
|
//初始化表集合
|
|
if (tableApp == null)
|
|
{
|
|
tableApp = new DataTable();
|
|
tableApp.Columns.Add("key");
|
|
tableApp.Columns.Add("value");
|
|
//设置唯一约束
|
|
tableApp.Columns[0].Unique = true;
|
|
}
|
|
|
|
//清除数据
|
|
tableApp.Rows.Clear();
|
|
|
|
//加载数据
|
|
try
|
|
{
|
|
strAppName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".exe.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.ItemsSource = tableApp.DefaultView;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MainApp._MessageDialog.ShowException(ex);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加配置信息
|
|
/// </summary>
|
|
private void AddConfig(XmlNode nodeParent, DataRow rowApp)
|
|
{
|
|
//判断值类型
|
|
if (rowApp.IsNull(rowApp.Table.Columns[0]) || string.IsNullOrEmpty(rowApp[0].ToString()))
|
|
{
|
|
MainApp._MessageDialog.Show("App_CheckKey", null);
|
|
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()))
|
|
{
|
|
MainApp._MessageDialog.Show("App_CheckKey", null);
|
|
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);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存
|
|
/// </summary>
|
|
private void btnSave_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (xmlDoc == null)
|
|
return;
|
|
|
|
//提交保存
|
|
this.gridApp.CommitEdit(DataGridEditingUnit.Row, true);
|
|
|
|
if (MainApp._MessageDialog.ShowDialog("Save",null)== Sid.Windows.Controls.TaskDialogResult.Ok)
|
|
{
|
|
DataTable tableChanages = tableApp.GetChanges();
|
|
if (tableChanages != 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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 刷新
|
|
/// </summary>
|
|
private void btnUpdate_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
//加载数据
|
|
this.LoadData();
|
|
}
|
|
}
|
|
}
|