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

315 lines
13 KiB

6 months ago
using System;
using System.Data;
using System.Windows;
using KGIS.Framework.DBOperator;
using KGIS.Framework.Maps;
using KGIS.Framework.Utils;
using KGIS.Framework.Utils.Helper;
using Kingo.PluginServiceInterface;
namespace Kingo.Plugin.DataDictionary.Views
{
/// <summary>
/// DataDicDetailEdit.xaml 的交互逻辑
/// </summary>
public partial class DataDicDetailEdit : BaseWindow
{
private string dbPath = null;
/// <summary>
/// 父级节点ID
/// </summary>
public string OWNERDIC { get; set; }
/// <summary>
/// TreeNode信息
/// </summary>
public DataRow DrvNode { get; set; }
/// <summary>
/// 保存当前修改后节点
/// </summary>
public Action<bool, DicTreeNode, string> ActionChecked;
//初始化
public DataDicDetailEdit(string parentName = null)
{
InitializeComponent();
if ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) is ProjectInfo)
{
dbPath = ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) as ProjectInfo).GetDicDataPath();
}
if (!string.IsNullOrWhiteSpace(parentName))
{
ParentName.Text = parentName;
}
}
//保存
private void btnSave_Click(object sender, RoutedEventArgs e)
{
int tmp;
if (!int.TryParse(txtPaixu.Text, out tmp))
{
MessageHelper.Show("排序文本框,请正确输入数字。");
return;
}
if (string.IsNullOrWhiteSpace(dbPath))
return;
IRDBHelper rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite);
try
{
//新增数据
if (this.DataContext == null)
{
//验证Code是否已经存在,如果存在则提醒
string strChecksql = string.Format("select * from Sys_DicDetail where OWNERDIC='{0}' and CODE='{1}'", OWNERDIC, txtCode.Text.Trim());
DataTable dtCheck = rdbHelper.ExecuteDatatable("Sys_DicDetail", strChecksql, false);
if (dtCheck.Rows.Count > 0)
{
txtCode.Focus();
MessageHelper.Show("您输入的字典编码已存在,请重新填写!");
return;
}
string strSql = string.Format("insert into Sys_DicDetail (PID,NAME,CODE,OWNERDIC,REMARK,PAIXU)" +
"VALUES ('{0}','{1}','{2}','{3}','{4}',{5})", ParentID.Text, txtName.Text.Trim(), txtCode.Text.Trim(), OWNERDIC, txtRemark.Text.Trim(), Convert.ToInt32(txtPaixu.Text));
int res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text);
DataTable dtChecks = rdbHelper.ExecuteDatatable("Sys_DicD", strChecksql, false);
if (res > 0)
{
if (ActionChecked != null)
{
DicTreeNode treeNodes = new DicTreeNode()
{
Name = "[" + txtCode.Text.Trim() + "]" + txtName.Text,
IsExpanded = true,
IsParent = true,
Paixu = Convert.ToInt32(txtPaixu.Text)
};
if (dtChecks != null && dtChecks.Rows.Count > 0)
{
foreach (var item in dtChecks.Rows)
{
treeNodes.Data = item as DataRow;
break;
}
}
if (ParentID.Text.Trim().ToString() == "")
{
treeNodes.IsParent = false;
treeNodes.Icon = "pack://application:,,,/KGIS.PlatformPlugin;component/Resources/zrz.png";
ActionChecked(false, treeNodes, "");
}
else
{
treeNodes.IsParent = false;
// treeNodes.Icon = "pack://application:,,,/KGIS.Resource;component/Images/zrz.png";
treeNodes.Icon = "pack://application:,,,/KGIS.PlatformPlugin;component/Resources/zrz.png";
ActionChecked(false, treeNodes, ParentID.Text.Trim().ToString());
}
}
this.Close();
}
}
if (this.DataContext != null)
{
DataRow drv = this.DataContext as DataRow;
//验证Code是否已经存在,如果存在则提醒
string strChecksql = string.Format("select * from Sys_DicDetail where OWNERDIC='{0}' and CODE='{1}' and ID <>{2}", OWNERDIC, txtCode.Text.Trim(), drv["ID"]);
DataTable dtCheck = rdbHelper.ExecuteDatatable("Sys_DicDetail", strChecksql, false);
//if (dtCheck.Rows.Count > 0)
//{
// txtCode.Focus();
// MessageHelper.Show("您输入的字典编码已存在,请重新填写!");
// return;
//}
string strSql = string.Format("UPDATE Sys_DicDetail set NAME='{0}',CODE='{1}',PID='{2}',REMARK='{3}',PAIXU={4} " +
" where id={5} ", txtName.Text.Trim(), txtCode.Text.Trim(), ParentID.Text, txtRemark.Text.Trim(), Convert.ToInt32(txtPaixu.Text), drv["ID"]);
int res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text);
strChecksql = string.Format("select * from Sys_DicDetail where OWNERDIC='{0}' and CODE='{1}' and ID={2}", OWNERDIC, txtCode.Text.Trim(), drv["ID"]);
DataTable dtChecks = rdbHelper.ExecuteDatatable("Sys_DicDeta", strChecksql, false);
if (res > 0)
{
if (ActionChecked != null)
{
DicTreeNode treeNodes = new DicTreeNode()
{
Name = "[" + txtCode.Text.Trim() + "]" + txtName.Text,
IsExpanded = true,
IsParent = true,
Paixu = Convert.ToInt32(txtPaixu.Text)
};
if (dtChecks != null && dtChecks.Rows.Count > 0)
{
foreach (var item in dtChecks.Rows)
{
treeNodes.Data = item as DataRow;
break;
}
}
if (ParentID.Text.Trim().ToString() == "")
{
treeNodes.IsParent = false;
treeNodes.Icon = "pack://application:,,,/KGIS.PlatformPlugin;component/Resources/zrz.png";
ActionChecked(false, treeNodes, "");
}
else
{
treeNodes.IsParent = false;
treeNodes.Icon = "pack://application:,,,/KGIS.PlatformPlugin;component/Resources/zrz.png";
ActionChecked(false, treeNodes, ParentID.Text.Trim().ToString());
}
}
this.Close();
}
}
}
catch (Exception ex)
{
//记录日志
LogAPI.Debug(ex);
MessageHelper.Show(ex.Message);
}
finally
{
//关闭数据库连接
rdbHelper.DisConnect();
}
}
// 取消按钮,直接关闭编辑框
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
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");
}
//页面数据初始
public void InitPage(DataRow dtBGXM)
{
if (string.IsNullOrWhiteSpace(dbPath))
return;
this.Title = "编辑字典";
DataRow drNew = dtBGXM.Table.NewRow();
drNew.ItemArray = dtBGXM.ItemArray;
//绑定数据源
this.DataContext = drNew;
#region 查询父级名称代码
//给控件赋值
if (string.IsNullOrWhiteSpace(drNew["PID"].ToString()))
{
return;
}
IRDBHelper rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite);
try
{
string strSql = string.Format("select * from Sys_DicDetail where ID={0}", drNew["PID"]);
DataTable dt = rdbHelper.ExecuteDatatable("Sys_DicDetail", strSql, false);
if (dt.Rows.Count > 0)
{
ParentName.Text = "[" + dt.Rows[0]["CODE"].ToString() + "]" + dt.Rows[0]["NAME"].ToString();
ParentID.Text = drNew["PID"].ToString();
}
}
catch (Exception ex)
{
//记录日志
LogAPI.Debug(ex);
MessageHelper.ShowError(ex.Message);
}
finally
{
//关闭数据库连接
rdbHelper.DisConnect();
}
#endregion
}
//选择按钮
private void btnSelect_Click(object sender, RoutedEventArgs e)
{
DicHelpTree main = new DicHelpTree();
main.OWNERDIC = OWNERDIC;
main.GetValueHandler += GetValue;
main.Width = 330;
main.Height = 500;
main.Left = 482;
main.Top = 266;
//编辑数据
if (this.DataContext != null)
{
DataRow drv = this.DataContext as DataRow;
main.MINEID = drv["ID"].ToString();
}
main.ShowInMainWindow(true);
}
//委托事件方法,给控件赋值
private void GetValue(string sName, string sID)
{
ParentName.Text = sName;
ParentID.Text = sID;
}
//加载事件
private void BaseWindow_Loaded(object sender, RoutedEventArgs e)
{
if (DrvNode != null && !string.IsNullOrWhiteSpace(dbPath))
{
IRDBHelper rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite);
try
{
string strSql = string.Format("select * from Sys_DicDetail where ID={0}", DrvNode["ID"]);
DataTable dt = rdbHelper.ExecuteDatatable("Sys_DicDetail", strSql, false);
if (dt.Rows.Count > 0)
{
ParentName.Text = "[" + dt.Rows[0]["CODE"].ToString() + "]" + dt.Rows[0]["NAME"].ToString();
ParentID.Text = DrvNode["ID"].ToString();
}
}
catch (Exception ex)
{
//记录日志
LogAPI.Debug(ex);
MessageHelper.ShowError(ex.Message);
}
finally
{
//关闭数据库连接
rdbHelper.DisConnect();
}
}
}
}
}