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.
		
		
		
		
		
			
		
			
				
					
					
						
							355 lines
						
					
					
						
							15 KiB
						
					
					
				
			
		
		
	
	
							355 lines
						
					
					
						
							15 KiB
						
					
					
				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(); | 
						|
        //        } | 
						|
        //    } | 
						|
        //} | 
						|
    } | 
						|
}
 | 
						|
 |