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.
		
		
		
		
		
			
		
			
				
					
					
						
							314 lines
						
					
					
						
							13 KiB
						
					
					
				
			
		
		
	
	
							314 lines
						
					
					
						
							13 KiB
						
					
					
				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(); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |