年度变更建库软件5.0版本
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.

356 lines
15 KiB

6 months ago
using KGIS.Framework.DBOperator;
using KGIS.Framework.Maps;
using KGIS.Framework.Utils;
using KGIS.Framework.Utils.Helper;
using Kingo.PluginServiceInterface;
using System;
using System.Data;
using System.Windows;
using System.Windows.Input;
namespace Kingo.Plugin.DataDictionary.Views
{
/// <summary>
/// DataDicEdit.xaml 的交互逻辑
/// </summary>
public partial class DataDicEdit : BaseWindow
{
//判断是父节点还是子节点的编辑
public bool IsParent { get; set; }
/// <summary>
/// 保存当前选择节点
/// </summary>
int IndesStrs = 0;//父节点编辑0
//DataTable MpTable = null;
/// <summary>
/// 父节点新增节点后保存状态
/// </summary>
public Action<bool, DicTreeNode, string> actionUpdate;
/// <summary>
///
/// </summary>
/// <param name="IndesStr"></param>
/// <param name="IsEdit">true:编辑 false:新增</param>
public DataDicEdit(int IndesStr = 0, bool IsEdit = false)
{
InitializeComponent();
IRDBHelper rdbHelper = null;
try
{
IndesStrs = IndesStr;
string dbPath = null;
if ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) is ProjectInfo)
{
dbPath = ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) as ProjectInfo).GetDicDataPath();
}
if (string.IsNullOrWhiteSpace(dbPath))
{
throw new Exception("数据库连接字符串为空!");
}
rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite);
if (rdbHelper == null)
{
throw new Exception("数据库连接打开失败!");
}
DataTable dtCat = rdbHelper.ExecuteDatatable("Sys_DicType", "select * from Sys_DicType order by paixu", true);
if (dtCat == null || dtCat.Rows.Count <= 0)
{
return;
}
if (!IsEdit)
{
DataRow dr = dtCat.NewRow();
dr["ID"] = "0";
dr["NAME"] = "请选择";
dtCat.Rows.InsertAt(dr, 0);
}
ddlType.DisplayMemberPath = "NAME";
ddlType.SelectedValuePath = "ID";
ddlType.ItemsSource = dtCat.DefaultView;
ddlType.SelectedIndex = 0;
//判断当前选择节点,未选中则默认选择请选择项
if (IndesStrs > 0)
{
ddlType.SelectedIndex = IndesStrs;
}
//if (IndesStrs != 0)
//{
// ddlType.SelectedIndex = IndesStrs;
//}
//else
//{
// ddlType.SelectedIndex = 0;
//}
}
catch (Exception ex)
{
//记录日志
LogAPI.Debug(ex);
MessageHelper.ShowError(ex.Message);
}
finally
{
if (rdbHelper != null)
{
rdbHelper.DisConnect();
}
}
}
//页面数据初始
public void InitPage(DataRow dtBGXM)
{
this.Title = "编辑字典";
//绑定数据源
this.DataContext = dtBGXM;
if (IsParent)
{
ddlType.SelectedValue = 0;
ddlType.IsEnabled = false;
}
else
{
//给控件赋值
ddlType.SelectedValue = dtBGXM["TYPE"];
}
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
IRDBHelper rdbHelper = null;
try
{
string dbPath = (MapsManager.Instance.CurrProjectInfo as ProjectInfo).GetDicDataPath();
if (string.IsNullOrWhiteSpace(dbPath))
{
throw new Exception("数据库连接字符串为空!");
}
rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite);
if (rdbHelper == null)
{
throw new Exception("数据库连接打开失败!");
}
int tmp;
if (!int.TryParse(txtPaixu.Text, out tmp))
{
throw new Exception("排序文本框,请正确输入数字!");
}
DataTable NewlyAdded = null;
//新增数据
if (this.DataContext == null)
{
string strType = ddlType.SelectedValue.ToString();
string strSql = string.Format("insert into Sys_DicManage (NAME,ALIASNAME,TYPE,REMARK,PAIXU) VALUES ('{0}','{1}','{2}','{3}',{4})", txtName.Text, txtAliasName.Text, ddlType.SelectedValue, txtRemark.Text, Convert.ToInt32(txtPaixu.Text));
string NewLyAddSql = string.Format("SELECT * FROM Sys_DicManage WHERE NAME ='{0}' AND ALIASNAME='{1}' AND TYPE ={2} AND REMARK='{3}'", txtName.Text, txtAliasName.Text, ddlType.SelectedValue, txtRemark.Text);
if (strType == "0")
{
strSql = string.Format("insert into Sys_DicType (NAME,ALIASNAME,REMARK,PAIXU) VALUES ('{0}','{1}','{2}',{3})", txtName.Text, txtAliasName.Text, txtRemark.Text, Convert.ToInt32(txtPaixu.Text));
NewLyAddSql = string.Format("SELECT * FROM Sys_DicType WHERE NAME='{0}' AND ALIASNAME='{1}' AND REMARK='{2}'", txtName.Text, txtAliasName.Text, txtRemark.Text);
}
int res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text);
if (res <= 0)
{
return;
}
NewlyAdded = rdbHelper.ExecuteDatatable("NewAdded", NewLyAddSql, false);
if (actionUpdate == null)
{
return;
}
DicTreeNode treeNodes = new DicTreeNode()
{
Name = txtName.Text,
IsExpanded = true,
Paixu = Convert.ToInt32(txtPaixu.Text)
};
if (NewlyAdded != null && NewlyAdded.Rows.Count > 0)
{
foreach (var item in NewlyAdded.Rows)
{
treeNodes.Data = item as DataRow;
break;
}
}
if (ddlType.SelectedIndex > 0)
{
treeNodes.IsParent = false;
treeNodes.Icon = "pack://application:,,,/KGIS.PlatformPlugin;component/Resources/zrz.png";
actionUpdate(false, treeNodes, ddlType.SelectedValue.ToString());
}
else
{
treeNodes.IsParent = true;
treeNodes.Icon = "pack://application:,,,/KGIS.PlatformPlugin;component/Resources/zrz.png";
actionUpdate(true, treeNodes, ddlType.SelectedValue.ToString());
}
}
else if (this.DataContext != null)//修改数据
{
DataRow drv = this.DataContext as DataRow;
if (drv == null)
{
return;
}
drv["NAME"] = txtName.Text;
drv["ALIASNAME"] = txtAliasName.Text;
drv["REMARK"] = txtRemark.Text;
string strSql = string.Empty;
string NewLyAddSql = string.Empty;
//主窗体
if (IndesStrs == 0)//父节点编辑
{
if (IsParent)
{
strSql = string.Format("UPDATE Sys_DicType set NAME='{0}',ALIASNAME='{1}',REMARK='{2}' ,paixu={3} where id={4} ", txtName.Text, txtAliasName.Text, txtRemark.Text, Convert.ToInt32(txtPaixu.Text), drv["ID"]);
NewLyAddSql = string.Format("SELECT * FROM Sys_DicType WHERE NAME='{0}' AND ALIASNAME='{1}' AND id={2} ", txtName.Text, txtAliasName.Text, drv["ID"]);
}
else
{
strSql = string.Format("UPDATE Sys_DicManage set NAME='{0}',ALIASNAME='{1}',TYPE='{2}',REMARK='{3}',paixu={4} where id={5} ", txtName.Text, txtAliasName.Text, ddlType.SelectedValue, txtRemark.Text, Convert.ToInt32(txtPaixu.Text), drv["ID"]);
NewLyAddSql = string.Format("SELECT * FROM Sys_DicManage WHERE NAME ='{0}' AND ALIASNAME='{1}' AND TYPE ={2} AND REMARK='{3}' AND id={4}", txtName.Text, txtAliasName.Text, ddlType.SelectedValue, txtRemark.Text, drv["ID"]);
}
}
else if (IndesStrs == 1)
{
if (IsParent)
{
strSql = string.Format("UPDATE Sys_DicManage set NAME='{0}',ALIASNAME='{1}',TYPE='{2}',REMARK='{3}' where id={4} ", txtName.Text, txtAliasName.Text, ddlType.SelectedValue, txtRemark.Text, drv["ID"]);
NewLyAddSql = string.Format("SELECT * FROM Sys_DicManage WHERE NAME ='{0}' AND ALIASNAME='{1}' AND TYPE ={2} AND REMARK='{3}' AND id={4}", txtName.Text, txtAliasName.Text, ddlType.SelectedValue, txtRemark.Text, drv["ID"]);
}
else
{
strSql = string.Format("UPDATE Sys_DicManage set NAME='{0}',ALIASNAME='{1}',TYPE='{2}',REMARK='{3}' where id={4} ", txtName.Text, txtAliasName.Text, ddlType.SelectedValue, txtRemark.Text, drv["ID"]);
NewLyAddSql = string.Format("SELECT * FROM Sys_DicManage WHERE NAME ='{0}' AND ALIASNAME='{1}' AND TYPE ={2} AND REMARK='{3}' AND id={4}", txtName.Text, txtAliasName.Text, ddlType.SelectedValue, txtRemark.Text, drv["ID"]);
}
}
int res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text);
if (res < 0)
{
return;
}
NewlyAdded = rdbHelper.ExecuteDatatable("NewAdded", NewLyAddSql, false);
if (actionUpdate == null)
{
return;
}
DicTreeNode treeNodes = new DicTreeNode()
{
Name = txtName.Text,
IsExpanded = true,
Paixu = Convert.ToInt32(txtPaixu.Text)
};
if (NewlyAdded != null && NewlyAdded.Rows.Count > 0)
{
foreach (var item in NewlyAdded.Rows)
{
treeNodes.Data = item as DataRow;
break;
}
}
if (ddlType.SelectedIndex >= 0)
{
treeNodes.IsParent = false;
treeNodes.Icon = "pack://application:,,,/KGIS.PlatformPlugin;component/Resources/zrz.png";
actionUpdate(false, treeNodes, ddlType.SelectedValue.ToString());
}
else
{
treeNodes.IsParent = true;
treeNodes.Icon = "pack://application:,,,/KGIS.PlatformPlugin;component/Resources/zrz.png";
actionUpdate(true, treeNodes, ddlType.SelectedValue.ToString());
}
}
this.Close();
}
catch (Exception ex)
{
//记录日志
LogAPI.Debug(ex);
MessageHelper.ShowError(ex.Message);
}
finally
{
if (rdbHelper != null)
{
rdbHelper.DisConnect();
}
}
}
// 取消按钮,直接关闭编辑框
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
this.Close();
}
// 验证事件,非空验证
private void Validate(object sender, DevExpress.Xpf.Editors.ValidationEventArgs e)
{
if (e.Value != null)
{
if (e.Value is string)
{
if (string.IsNullOrWhiteSpace(e.Value as string))
{
e.IsValid = false;
e.ErrorContent = "值不能为空";
}
}
else if (e.Value is float || e.Value is double || e.Value is Int32 || e.Value is decimal)
{
double db = Convert.ToDouble(e.Value);
if (db == 0)
{
e.IsValid = false;
e.ErrorContent = "值不能为0";
}
}
}
else
{
e.IsValid = false;
e.ErrorContent = "值不能为空";
}
// MessageBox.Show("我是验证事件ain");
}
//private void btnAddMapping_ClickEvent(object sender, MouseButtonEventArgs e)
//{
// if (MpTable != null)
// {
// FrmAddDicMapping AddDicMapping = new FrmAddDicMapping();
// if (AddDicMapping.ShowInMainWindow(true) == true)
// {
// DicMappingTable DMT = AddDicMapping.GetData();
// DataRow dr = MpTable.NewRow();
// dr["FieldName"] = DMT.FieldName;
// dr["TableName"] = DMT.TableName;
// dr["DicName"] = (this.DataContext as DataRow)["ALIASNAME"];
// MpTable.Rows.Add(dr);
// dgMapping.ItemsSource = MpTable.DefaultView;
// }
// }
//}
//private void btnDelMapping_ClickEvent(object sender, MouseButtonEventArgs e)
//{
// if (MpTable != null)
// {
// if (dgMapping.SelectedIndex == -1)
// {
// MessageHelper.Show("请选择要删除的项!");
// }
// else
// {
// DataRow dr = MpTable.Rows[dgMapping.SelectedIndex];
// CommonAPI.SetFieldDomainToNull(dr["TABLENAME"].ToString(), dr["FIELDNAME"].ToString());
// dr.Delete();
// }
// }
//}
}
}