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.
		
		
		
		
		
			
		
			
				
					
					
						
							154 lines
						
					
					
						
							5.5 KiB
						
					
					
				
			
		
		
	
	
							154 lines
						
					
					
						
							5.5 KiB
						
					
					
				using KGIS.Framework.DBOperator; | 
						|
using KGIS.Framework.Utils; | 
						|
using KGIS.Framework.Utils.Helper; | 
						|
using System; | 
						|
using System.Collections.ObjectModel; | 
						|
using System.Data; | 
						|
using System.Windows; | 
						|
 | 
						|
namespace Kingo.Plugin.DataDictionary.Views | 
						|
{ | 
						|
    /// <summary> | 
						|
    /// DicHelpTree.xaml 的交互逻辑 | 
						|
    /// </summary> | 
						|
    public partial class DicHelpTree : BaseWindow | 
						|
    { | 
						|
        /// <summary> | 
						|
        /// 委托函数 | 
						|
        /// </summary> | 
						|
        /// <param name="sName">名称</param> | 
						|
        /// <param name="sID">ID</param> | 
						|
        public delegate void DelegateGetValue(string sName, string sID); | 
						|
        /// <summary> | 
						|
        /// 获取返回值事件 | 
						|
        /// </summary> | 
						|
        public event DelegateGetValue GetValueHandler; | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 父级ID | 
						|
        /// </summary> | 
						|
        public string OWNERDIC { get; set; } | 
						|
 | 
						|
        //编辑时使用,排除自己的数据显示 | 
						|
        public string MINEID { get; set; } | 
						|
 | 
						|
        public DicHelpTree() | 
						|
        { | 
						|
            InitializeComponent(); | 
						|
        } | 
						|
 | 
						|
        //取消按钮 | 
						|
        private void btnCancel_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            this.Close(); | 
						|
        } | 
						|
        //清空事件 | 
						|
        private void btnClean_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            if (GetValueHandler != null) | 
						|
            { | 
						|
                GetValueHandler("", ""); | 
						|
            } | 
						|
            this.Close(); | 
						|
        } | 
						|
 | 
						|
        private void btnSave_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            if (GetValueHandler != null) | 
						|
            { | 
						|
                TreeNode item = this.tvHelpTree.SelectedItem as TreeNode; | 
						|
                if (item != null && item.Data != null) | 
						|
                { | 
						|
                    DataRowView drv = item.Data as DataRowView; | 
						|
                    string sID = drv["ID"].ToString(); | 
						|
                    GetValueHandler(item.Name, sID); | 
						|
                } | 
						|
            } | 
						|
            this.Close(); | 
						|
        } | 
						|
        //加载 | 
						|
        private void BaseWindow_Loaded(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            //tvHelpTree | 
						|
            IRDBHelper rdbHelper = null; | 
						|
            try | 
						|
            { | 
						|
                string connStr = SysConfigsOprator.GetDBConnectionByName("MDBOledbConnection"); | 
						|
                connStr = string.Format(connStr, SysAppPath.GetCurrentAppPath() + @"DataBase\System.mdb"); ; | 
						|
                rdbHelper = RDBFactory.CreateDbHelper(connStr, DatabaseType.MSAccess); | 
						|
                DataTable dtDict = rdbHelper.ExecuteDatatable("Sys_DicDetail", "select * from Sys_DicDetail", false); | 
						|
                ObservableCollection<TreeNode> itemList = new ObservableCollection<TreeNode>(); | 
						|
 | 
						|
                DataView dvDict = dtDict.DefaultView; | 
						|
                dvDict.RowFilter = " OWNERDIC='" + OWNERDIC + "' and (PID is null or PID='')"; | 
						|
                if (dvDict.Count > 0) | 
						|
                { | 
						|
                    foreach (DataRowView view in dvDict) | 
						|
                    { | 
						|
                        int id = Convert.ToInt32(view["ID"].ToString()); | 
						|
                        string name = view["NAME"].ToString() + "[" + view["CODE"].ToString() + "]"; | 
						|
                        if (MINEID == view["OBJECTID"].ToString()) | 
						|
                        { | 
						|
                            continue; | 
						|
                        } | 
						|
                        TreeNode childNodeItem = new TreeNode() | 
						|
                        { | 
						|
                            Name = name, | 
						|
                            Icon = "pack://application:,,,/KGIS.PlatformPlugin;component/Resources/zrz.png", | 
						|
                            IsExpanded = false, | 
						|
                            Data = view | 
						|
                        }; | 
						|
                        ForeachPropertyNode(childNodeItem, id, dtDict); | 
						|
                        itemList.Add(childNodeItem); | 
						|
                    } | 
						|
                } | 
						|
                //ForeachPropertyNode(node, id); | 
						|
                //itemList.Add(node); | 
						|
                this.tvHelpTree.ItemsSource = itemList; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowError("数据加载异常!" + ex.Message); | 
						|
                LogAPI.Debug(ex); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                if (rdbHelper != null) | 
						|
                { | 
						|
                    rdbHelper.DisConnect(); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        //无限极增加子节点 | 
						|
        private void ForeachPropertyNode(TreeNode node, int pid, DataTable dtDict) | 
						|
        { | 
						|
            DataView dvDict = dtDict.DefaultView; | 
						|
            dvDict.RowFilter = " PID='" + pid.ToString() + "'"; | 
						|
 | 
						|
            if (dvDict.Count > 0) | 
						|
            { | 
						|
                node.Nodes = new System.Collections.ObjectModel.ObservableCollection<TreeNode>(); | 
						|
                foreach (DataRowView view in dvDict) | 
						|
                { | 
						|
                    int id = Convert.ToInt32(view["ID"].ToString()); | 
						|
                    string name = view["NAME"].ToString() + "[" + view["CODE"].ToString() + "]"; ; | 
						|
                    int parentId = Convert.ToInt32(view["PID"].ToString()); | 
						|
                    if (MINEID == view["ID"].ToString()) | 
						|
                    { | 
						|
                        continue; | 
						|
                    } | 
						|
                    TreeNode childNodeItem = new TreeNode() | 
						|
                    { | 
						|
                        Name = name, | 
						|
                        Icon = "pack://application:,,,/KGIS.PlatformPlugin;component/Resources/zrz.png", | 
						|
                        IsExpanded = false, | 
						|
                        Data = view | 
						|
                    }; | 
						|
                    ForeachPropertyNode(childNodeItem, id, dtDict); | 
						|
                    node.Nodes.Add(childNodeItem); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |