| 
							
								 | 
							
							using ESRI.ArcGIS.Controls; | 
						
						
						
						
							 | 
							
								 | 
							
							using ESRI.ArcGIS.Geodatabase; | 
						
						
						
						
							 | 
							
								 | 
							
							using KGIS.Framework.DBOperator; | 
						
						
						
						
							 | 
							
								 | 
							
							using KGIS.Framework.Maps; | 
						
						
						
						
							 | 
							
								 | 
							
							using KGIS.Framework.Platform; | 
						
						
						
						
							 | 
							
								 | 
							
							using KGIS.Framework.Utils; | 
						
						
						
						
							 | 
							
								 | 
							
							using KGIS.Framework.Utils.ExtensionMethod; | 
						
						
						
						
							 | 
							
								 | 
							
							using KGIS.Framework.Utils.Helper; | 
						
						
						
						
							 | 
							
								 | 
							
							using KGIS.Framework.Utils.Interface; | 
						
						
						
						
							 | 
							
								 | 
							
							using KGIS.Framework.Views; | 
						
						
						
						
							 | 
							
								 | 
							
							using Kingo.Plugin.MapView.Enum; | 
						
						
						
						
							 | 
							
								 | 
							
							using Kingo.Plugin.MapView.Model; | 
						
						
						
						
							 | 
							
								 | 
							
							using Kingo.PluginServiceInterface; | 
						
						
						
						
							 | 
							
								 | 
							
							using Kingo.PluginServiceInterface.Model; | 
						
						
						
						
							 | 
							
								 | 
							
							using KUI.ComboBox; | 
						
						
						
						
							 | 
							
								 | 
							
							using System; | 
						
						
						
						
							 | 
							
								 | 
							
							using System.Collections.Generic; | 
						
						
						
						
							 | 
							
								 | 
							
							using System.ComponentModel; | 
						
						
						
						
							 | 
							
								 | 
							
							using System.Data; | 
						
						
						
						
							 | 
							
								 | 
							
							using System.Linq; | 
						
						
						
						
							 | 
							
								 | 
							
							using System.Windows; | 
						
						
						
						
							 | 
							
								 | 
							
							using System.Windows.Controls; | 
						
						
						
						
							 | 
							
								 | 
							
							using System.Windows.Data; | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							namespace Kingo.Plugin.MapView.Views.FeatureAttribute | 
						
						
						
						
							 | 
							
								 | 
							
							{ | 
						
						
						
						
							 | 
							
								 | 
							
							    /// <summary> | 
						
						
						
						
							 | 
							
								 | 
							
							    /// UCAttributeEdit.xaml 的交互逻辑 | 
						
						
						
						
							 | 
							
								 | 
							
							    /// </summary> | 
						
						
						
						
							 | 
							
								 | 
							
							    public partial class UCAttributeEdit : UserControl, IElementInfo | 
						
						
						
						
							 | 
							
								 | 
							
							    { | 
						
						
						
						
							 | 
							
								 | 
							
							        LayerFieldCfg Cfg = null; | 
						
						
						
						
							 | 
							
								 | 
							
							        EngineEditor editor = null; | 
						
						
						
						
							 | 
							
								 | 
							
							        List<DataDicTionary> Dics = null; | 
						
						
						
						
							 | 
							
								 | 
							
							        public Linkage[] LinkageCfg { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        private object Data = null; | 
						
						
						
						
							 | 
							
								 | 
							
							        private List<PropertyGridDataStruct> Property = null; | 
						
						
						
						
							 | 
							
								 | 
							
							        public UCAttributeEdit() | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            InitializeComponent(); | 
						
						
						
						
							 | 
							
								 | 
							
							            this.DockAreas = DockStyle.DockRight | DockStyle.Float;//Common.Interface.DockStyle.DockRight | Common.Interface.DockStyle.Float; | 
						
						
						
						
							 | 
							
								 | 
							
							            this.FloatSize = new System.Drawing.Size(400, 500); | 
						
						
						
						
							 | 
							
								 | 
							
							            this.DefaultArea = DockStyle.Float;// Common.Interface.DockStyle.DockRight; | 
						
						
						
						
							 | 
							
								 | 
							
							            this.ShowCloseButton = false; | 
						
						
						
						
							 | 
							
								 | 
							
							            this.ShowAutoHideButton = true; | 
						
						
						
						
							 | 
							
								 | 
							
							            this.Title = "要素属性"; | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							            editor = new EngineEditorClass(); | 
						
						
						
						
							 | 
							
								 | 
							
							            Property = new List<PropertyGridDataStruct>(); | 
						
						
						
						
							 | 
							
								 | 
							
							            string cfgFilePath = System.IO.Path.Combine(SysAppPath.GetConfigPath(), "LayerFieldsCfg.xml"); | 
						
						
						
						
							 | 
							
								 | 
							
							            Cfg = SerializeAPI.DeserializeToObject2<LayerFieldCfg>(cfgFilePath); | 
						
						
						
						
							 | 
							
								 | 
							
							            this.Loaded += (s, e) => | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                //关闭编辑禁用属性编辑 | 
						
						
						
						
							 | 
							
								 | 
							
							                bool IsOnlySave = false; | 
						
						
						
						
							 | 
							
								 | 
							
							                editor = new EngineEditorClass(); | 
						
						
						
						
							 | 
							
								 | 
							
							                editor.OnStopEditing += (b) => | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (!IsOnlySave && Data != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (Data is IFeature) | 
						
						
						
						
							 | 
							
								 | 
							
							                            MapsManager.Instance.MapService.SelectFeature(((Data as IFeature).Class as FeatureClass).Name, (Data as IFeature).OID.ToString()); | 
						
						
						
						
							 | 
							
								 | 
							
							                        AllowEdit = false; | 
						
						
						
						
							 | 
							
								 | 
							
							                        RefreshView(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    IsOnlySave = false; | 
						
						
						
						
							 | 
							
								 | 
							
							                    Dics = null; | 
						
						
						
						
							 | 
							
								 | 
							
							                }; | 
						
						
						
						
							 | 
							
								 | 
							
							                editor.OnSaveEdits += () => | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    IsOnlySave = true; | 
						
						
						
						
							 | 
							
								 | 
							
							                }; | 
						
						
						
						
							 | 
							
								 | 
							
							                editor.OnStartEditing += () => | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (Data != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        AllowEdit = true; | 
						
						
						
						
							 | 
							
								 | 
							
							                        RefreshView(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        Dics = null; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                }; | 
						
						
						
						
							 | 
							
								 | 
							
							            }; | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        #region 继承字段 | 
						
						
						
						
							 | 
							
								 | 
							
							        public bool IsShow { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public int ShowIndex { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public bool ResetSize { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public bool AllowEdit { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public Guid ID { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public DockStyle DockAreas { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public System.Drawing.Size FloatSize { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public int DockWidth { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public int DockHeight { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public DockStyle DefaultArea { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public bool ShowCloseButton { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public bool ShowAutoHideButton { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        public string Title { get; set; } | 
						
						
						
						
							 | 
							
								 | 
							
							        #endregion | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        public void BindData(object obj) | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            try | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                if (obj is IFeature) Data = obj; | 
						
						
						
						
							 | 
							
								 | 
							
							                Property.Clear(); | 
						
						
						
						
							 | 
							
								 | 
							
							                if (obj == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    grid.Children.Clear(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    grid.RowDefinitions.Clear(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    return; | 
						
						
						
						
							 | 
							
								 | 
							
							                }; | 
						
						
						
						
							 | 
							
								 | 
							
							                //AllowEdit = !(editor.EditState == esriEngineEditState.esriEngineStateNotEditing || (editor.EditWorkspace != null && editor.EditWorkspace.PathName != ((obj as IFeature).Class as FeatureClass).Workspace.PathName)); | 
						
						
						
						
							 | 
							
								 | 
							
							                if (Dics == null && Platform.Instance.SystemType != SystemTypeEnum.DTBJK && Platform.Instance.SystemType != SystemTypeEnum.WYZS && Platform.Instance.SystemType != SystemTypeEnum.YCLJK) | 
						
						
						
						
							 | 
							
								 | 
							
							                    Dics = Platform.Instance.DicHelper.GetAllDic(); | 
						
						
						
						
							 | 
							
								 | 
							
							                else if (Platform.Instance.SystemType == SystemTypeEnum.DTBJK || Platform.Instance.SystemType == SystemTypeEnum.WYZS || Platform.Instance.SystemType == SystemTypeEnum.YCLJK) | 
						
						
						
						
							 | 
							
								 | 
							
							                    Dics = GetAllDic(); | 
						
						
						
						
							 | 
							
								 | 
							
							                if (obj is IFeature) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    AllowEdit = !(editor.EditState == esriEngineEditState.esriEngineStateNotEditing || (editor.EditWorkspace != null && editor.EditWorkspace.PathName != ((obj as IFeature).Class as FeatureClass).Workspace.PathName)); | 
						
						
						
						
							 | 
							
								 | 
							
							                    IFeature fe = obj as IFeature; | 
						
						
						
						
							 | 
							
								 | 
							
							                    LayerInfo layer = Cfg.Layers[0]; | 
						
						
						
						
							 | 
							
								 | 
							
							                    for (int i = 0; i < fe.Fields.FieldCount; i++) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        IField field = fe.Fields.get_Field(i); | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (field.Name.ToUpper() == "SHAPE" || field.Name.ToUpper().Contains("_EXTRA") || field.Name == "ErrorMessage" || field.Name == "ErrorShape") | 
						
						
						
						
							 | 
							
								 | 
							
							                            continue; | 
						
						
						
						
							 | 
							
								 | 
							
							                        List<FieldCfg> fields = layer.GetAllField(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        FieldCfg fCfg = fields.FirstOrDefault(f => f.Name == field.Name); | 
						
						
						
						
							 | 
							
								 | 
							
							                        IDomain domain = field.Domain; | 
						
						
						
						
							 | 
							
								 | 
							
							                        PropertyGridDataStruct p = new PropertyGridDataStruct(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        p.DisplayMemberPath = "DisplayName"; | 
						
						
						
						
							 | 
							
								 | 
							
							                        p.ValuePath = "CODE"; | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (!field.Editable) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.IsReadOnly = !field.Editable; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.IsReadOnly = editor.EditState == esriEngineEditState.esriEngineStateNotEditing || (editor.EditWorkspace != null && editor.EditWorkspace.PathName != (fe.Class as FeatureClass).Workspace.PathName); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        //是否可以为空 | 
						
						
						
						
							 | 
							
								 | 
							
							                        p.AllowNull = field.IsNullable; | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (string.IsNullOrWhiteSpace(field.AliasName)) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.Key = field.Name; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.Key = field.AliasName; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        p.FieldName = field.Name; | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (fCfg != null && !string.IsNullOrWhiteSpace(fCfg.DicName)) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.PropertyType = enumPropertyType.ComboBox; | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (LinkageCfg != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                foreach (var item in LinkageCfg) | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    if (field.Name == item.TargetPropertyName || field.Name == item.SourcePropertyName) | 
						
						
						
						
							 | 
							
								 | 
							
							                                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                                        p.IsGroup = item.IsGroup; | 
						
						
						
						
							 | 
							
								 | 
							
							                                        break; | 
						
						
						
						
							 | 
							
								 | 
							
							                                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                                Linkage cfg = LinkageCfg.FirstOrDefault(w => w.SourcePropertyName == field.Name && w.LinkageType == EnumLinkageType.None && (!string.IsNullOrWhiteSpace(w.DisplayMemberPath) || !string.IsNullOrWhiteSpace(w.ValuePath))); | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (cfg != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    p.DisplayMemberPath = cfg.DisplayMemberPath; | 
						
						
						
						
							 | 
							
								 | 
							
							                                    p.ValuePath = cfg.ValuePath; | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData = new List<DataDicTionary>();//单图斑建库系统不需要字典设置 | 
						
						
						
						
							 | 
							
								 | 
							
							                            DicTypeEnum dicType = (DicTypeEnum)System.Enum.Parse(typeof(DicTypeEnum), fCfg.DicName); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (Platform.Instance.SystemType != SystemTypeEnum.DTBJK && Platform.Instance.SystemType != SystemTypeEnum.YCLJK) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (p.Key == "权属单位代码" || p.Key == "坐落单位代码") | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    p.DicData.Add(new DataDicTionary() { NAME = " ", CODE = " ", DisplayName = " - ", ID = 1 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    p.DicData.AddRange(Platform.Instance.DicHelper.GetNoGroupDic(dicType, Dics).Where(x => (x.OWNERDIC == "1" || Convert.ToInt32(x.OWNERDIC) >= 50) && x.CODE.Length >= 19).ToLookup(x => x.CODE).ToDictionary(x => x.Key, x => x.First()).Values.ToList()); | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                                else | 
						
						
						
						
							 | 
							
								 | 
							
							                                    p.DicData = Platform.Instance.DicHelper.GetNoGroupDic(dicType, Dics); | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            else | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                p.DicData = GetNoGroupDic(dicType, Dics); | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.PropertyType = enumPropertyType.TextBox; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        //单图斑变更增加逻辑 | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (p.Key == "DDTCMC" || p.Key == "单独图层名称") | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData = new List<DataDicTionary>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            //p.DicData.Add(new DataDicTionary() { NAME = " ", CODE = " ", DisplayName = " - ", ID = 1 });  | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "一般地类", CODE = "一般地类", DisplayName = "一般地类-一般地类", ID = 2 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "已灭失", CODE = "已灭失", DisplayName = "已灭失-已灭失", ID = 3 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "光伏板区", CODE = "1302", DisplayName = "1302-光伏板区", ID = 4 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "推土区", CODE = "1303", DisplayName = "1303-推土区", ID = 5 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "拆除未尽区", CODE = "1304", DisplayName = "1304-拆除未尽区", ID = 6 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "路面范围", CODE = "1305", DisplayName = "1305-路面范围", ID = 7 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "工厂化种植更新", CODE = "1306", DisplayName = "1306-工厂化种植更新", ID = 8 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.PropertyType = enumPropertyType.ComboBox; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if (p.Key == "SFXML" || p.Key == "变更类型") | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData = new List<DataDicTionary>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "否", CODE = "0", DisplayName = "0-否", ID = 2 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "是", CODE = "1", DisplayName = "1-是", ID = 3 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.PropertyType = enumPropertyType.ComboBox; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if (p.Key == "XMLX" || p.Key == "项目类型") | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData = new List<DataDicTionary>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "土地开发项目", CODE = "1", DisplayName = "1-土地开发项目", ID = 2 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "增减挂钩项目", CODE = "2", DisplayName = "2-增减挂钩项目", ID = 3 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "生态修复项目", CODE = "3", DisplayName = "3-生态修复项目", ID = 4 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "高标准农田建设项目", CODE = "4", DisplayName = "4-高标准农田建设项目", ID = 5 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "恢复耕地项目", CODE = "5", DisplayName = "5-恢复耕地项目", ID = 6 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.DicData.Add(new DataDicTionary() { NAME = "其他项目", CODE = "6", DisplayName = "6-其他项目", ID = 7 }); | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.PropertyType = enumPropertyType.ComboBox; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if (p.Key == "TBMJ" || p.Key == "图斑面积") | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.IsReadOnly = true; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (fe.get_Value(i) is DBNull || fe.get_Value(i) == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.Value = null; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.Value = fe.get_Value(i).ToString().Trim(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        p.PropertyChanged += PropertyChangedEvent; | 
						
						
						
						
							 | 
							
								 | 
							
							                        if ((fe.Class as FeatureClass).Name == "JCTB") | 
						
						
						
						
							 | 
							
								 | 
							
							                            p.Visible = AllowEdit;//当前对监测图斑单独显示 | 
						
						
						
						
							 | 
							
								 | 
							
							                        Property.Add(p); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    RefreshView(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    this.DataContext = Property; | 
						
						
						
						
							 | 
							
								 | 
							
							                    ExecuteDataCheck(fe); | 
						
						
						
						
							 | 
							
								 | 
							
							                    //lbTBList.ItemsSource = null; | 
						
						
						
						
							 | 
							
								 | 
							
							                    //lbTBList.ItemsSource = Property; | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            catch (Exception ex) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                LogAPI.Debug("图斑变更属性编辑失败:" + ex.Message); | 
						
						
						
						
							 | 
							
								 | 
							
							                throw ex; | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        private void RefreshView() | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            SetVisible(Property); | 
						
						
						
						
							 | 
							
								 | 
							
							            #region | 
						
						
						
						
							 | 
							
								 | 
							
							            grid.Children.Clear(); | 
						
						
						
						
							 | 
							
								 | 
							
							            grid.RowDefinitions.Clear(); | 
						
						
						
						
							 | 
							
								 | 
							
							            Property = Property.OrderBy(o => o.Order).ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							            foreach (var item in Property) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                if (item.Visible) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(37, GridUnitType.Pixel) }); | 
						
						
						
						
							 | 
							
								 | 
							
							                    Label lab = new Label(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    lab.Content = item.Key; | 
						
						
						
						
							 | 
							
								 | 
							
							                    lab.SetValue(Grid.RowProperty, grid.RowDefinitions.Count - 1); | 
						
						
						
						
							 | 
							
								 | 
							
							                    lab.HorizontalContentAlignment = HorizontalAlignment.Right; | 
						
						
						
						
							 | 
							
								 | 
							
							                    lab.Margin = new Thickness(4); | 
						
						
						
						
							 | 
							
								 | 
							
							                    lab.IsEnabled = !item.IsReadOnly; | 
						
						
						
						
							 | 
							
								 | 
							
							                    grid.Children.Add(lab); | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							                    Control ctrl = new TextBox(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    ctrl.Height = 27; | 
						
						
						
						
							 | 
							
								 | 
							
							                    Binding bind = new Binding(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    bind.Path = new PropertyPath("Value"); | 
						
						
						
						
							 | 
							
								 | 
							
							                    bind.Mode = BindingMode.TwoWay; | 
						
						
						
						
							 | 
							
								 | 
							
							                    switch (item.PropertyType) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        case enumPropertyType.Default: | 
						
						
						
						
							 | 
							
								 | 
							
							                        case enumPropertyType.TextBox: | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl = new TextBox(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.Height = 27; | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.DataContext = item; | 
						
						
						
						
							 | 
							
								 | 
							
							                            bind.UpdateSourceTrigger = UpdateSourceTrigger.LostFocus; | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.SetBinding(TextBox.TextProperty, bind); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.IsEnabled = !item.IsReadOnly; | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case enumPropertyType.CheckBox: | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl = new CheckBox(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.DataContext = item; | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.SetBinding(CheckBox.IsCheckedProperty, bind); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.IsEnabled = AllowEdit; | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case enumPropertyType.DatePicker: | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl = new DatePicker(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.DataContext = item; | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.SetBinding(DatePicker.TextProperty, bind); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.IsEnabled = AllowEdit; | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case enumPropertyType.SpinEdit: | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case enumPropertyType.ButtonEdit: | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case enumPropertyType.ButtonEditFJ: | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case enumPropertyType.ComboBox: | 
						
						
						
						
							 | 
							
								 | 
							
							                        case enumPropertyType.AutoCompleteBox: | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl = new AutoCompleteBox(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.Height = 27; | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.DataContext = item; | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.LostFocus += UCAttributeLostFocus; | 
						
						
						
						
							 | 
							
								 | 
							
							                            bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.SetValue(AutoCompleteBox.ItemsSourceProperty, item.DicData); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.SetValue(AutoCompleteBox.ValueMemberPathProperty, item.ValuePath); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.SetValue(AutoCompleteBox.DisplayMemberPathProperty, item.DisplayMemberPath); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.SetBinding(AutoCompleteBox.SelectedValueProperty, bind); | 
						
						
						
						
							 | 
							
								 | 
							
							                            ctrl.IsEnabled = AllowEdit; | 
						
						
						
						
							 | 
							
								 | 
							
							                            (ctrl as AutoCompleteBox).IsEditable = AllowEdit; | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        default: | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    ctrl.SetValue(Grid.RowProperty, grid.RowDefinitions.Count - 1); | 
						
						
						
						
							 | 
							
								 | 
							
							                    ctrl.SetValue(Grid.ColumnProperty, 1); | 
						
						
						
						
							 | 
							
								 | 
							
							                    ctrl.HorizontalAlignment = HorizontalAlignment.Stretch; | 
						
						
						
						
							 | 
							
								 | 
							
							                    ctrl.Margin = new Thickness(2); | 
						
						
						
						
							 | 
							
								 | 
							
							                    grid.Children.Add(ctrl); | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            grid.RowDefinitions.Add(new RowDefinition()); | 
						
						
						
						
							 | 
							
								 | 
							
							            #endregion | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        /// <summary> | 
						
						
						
						
							 | 
							
								 | 
							
							        /// AttributeEdit_LostFous | 
						
						
						
						
							 | 
							
								 | 
							
							        /// </summary> | 
						
						
						
						
							 | 
							
								 | 
							
							        /// <param name="sender"></param> | 
						
						
						
						
							 | 
							
								 | 
							
							        /// <param name="e"></param> | 
						
						
						
						
							 | 
							
								 | 
							
							        private void UCAttributeLostFocus(object sender, RoutedEventArgs e) | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            try | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                string senderText = (sender as AutoCompleteBox).Text.Trim(); | 
						
						
						
						
							 | 
							
								 | 
							
							                if (!(sender as AutoCompleteBox).SelectedValue.ToString().Trim().Equals(senderText) && string.IsNullOrWhiteSpace(senderText)) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    (sender as AutoCompleteBox).SelectedValue = ((e.Source as AutoCompleteBox).ItemsSource as List<DataDicTionary>)[0]; | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            catch (Exception ex) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                LogAPI.Debug(ex.Message); | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        private void SetVisible(List<PropertyGridDataStruct> pList) | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            string cfgFilePath = System.IO.Path.Combine(SysAppPath.GetConfigPath(), "LayerFieldsCfg.xml"); | 
						
						
						
						
							 | 
							
								 | 
							
							            if (Cfg == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                Cfg = SerializeAPI.DeserializeToObject2<LayerFieldCfg>(cfgFilePath); | 
						
						
						
						
							 | 
							
								 | 
							
							            if (Cfg == null || Cfg.Layers.Count == 0) return; | 
						
						
						
						
							 | 
							
								 | 
							
							            LayerInfo layer = Cfg.Layers[0]; | 
						
						
						
						
							 | 
							
								 | 
							
							            if ((Data is IFeature) && ((Data as IFeature).Class as FeatureClass).Name == "DLTBGX") | 
						
						
						
						
							 | 
							
								 | 
							
							                layer.Fields.ForEach(x => x.DisplayWhere = "");//增量更新变更展示全部可修改数据 | 
						
						
						
						
							 | 
							
								 | 
							
							            string dlbm = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							            string ddtbbz = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							            string sfxml = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							            string zzsx = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							            string czcsxm = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							            PropertyGridDataStruct propertySet = pList.FirstOrDefault(x => x.FieldName.ToUpper().Equals("DDTCBZ")); | 
						
						
						
						
							 | 
							
								 | 
							
							            if (propertySet != null) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                ddtbbz = propertySet.Value; | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            propertySet = pList.FirstOrDefault(x => x.FieldName.ToUpper().Equals("DLBM")); | 
						
						
						
						
							 | 
							
								 | 
							
							            if (propertySet != null) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                dlbm = propertySet.Value == null ? "" : propertySet.Value; | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            //propertySet = pList.FirstOrDefault(x => x.FieldName.Equals("SFXML")); | 
						
						
						
						
							 | 
							
								 | 
							
							            propertySet = pList.FirstOrDefault(x => x.Key.Equals("变更类型")); | 
						
						
						
						
							 | 
							
								 | 
							
							            if (propertySet != null) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                sfxml = propertySet.Value == null ? "" : propertySet.Value; | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							            foreach (var item in layer.Fields) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                string val = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							                int idx = -1; | 
						
						
						
						
							 | 
							
								 | 
							
							                //List<DataDicTionary> TempDic = null; | 
						
						
						
						
							 | 
							
								 | 
							
							                var GroupField = pList.FirstOrDefault(f => f.Key == item.Name || f.Key == item.AliasName); | 
						
						
						
						
							 | 
							
								 | 
							
							                if (GroupField == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    GroupField = new PropertyGridDataStruct(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    GroupField.PropertyType = enumPropertyType.ComboBox; | 
						
						
						
						
							 | 
							
								 | 
							
							                    GroupField.PropertyChanged += PropertyChangedEvent; | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                GroupField.Order = layer.Fields.IndexOf(item); | 
						
						
						
						
							 | 
							
								 | 
							
							                GroupField.Key = item.AliasName; | 
						
						
						
						
							 | 
							
								 | 
							
							                foreach (var subItem in item.Fields) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    var field = pList.FirstOrDefault(f => f.Key == subItem.Name || f.Key == subItem.AliasName); | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (field == null) return; | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (!string.IsNullOrWhiteSpace(field.Value)) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (!string.IsNullOrWhiteSpace(val.ToTrim())) | 
						
						
						
						
							 | 
							
								 | 
							
							                            val += "-"; | 
						
						
						
						
							 | 
							
								 | 
							
							                        val += field.Value; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (GroupField.PropertyType == field.PropertyType) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (GroupField.Value.ToTrim() != field.Value.ToTrim() && !GroupField.Value.ToTrim().Contains(field.Value.ToTrim())) | 
						
						
						
						
							 | 
							
								 | 
							
							                            GroupField.Value = field.Value; | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.DicData = field.DicData; | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.ValuePath = field.DisplayMemberPath; | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.DisplayMemberPath = field.DisplayMemberPath; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (!string.IsNullOrWhiteSpace(subItem.DisplayWhere.ToTrim())) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        //字段显示条件 | 
						
						
						
						
							 | 
							
								 | 
							
							                        string[] wheres = subItem.DisplayWhere.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); | 
						
						
						
						
							 | 
							
								 | 
							
							                        for (int i = 0; i < wheres.Length; i++) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            string[] kv = wheres[i].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (kv.Length != 2) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                LogAPI.Debug(string.Format("图层字段配置错误,FieldCfg中Name={0}", subItem.Name)); | 
						
						
						
						
							 | 
							
								 | 
							
							                                continue; | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            var tempField = pList.FirstOrDefault(f => f.Key == kv[0] || f.FieldName == kv[0]); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (tempField != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (kv[1].ToTrim().Contains("%")) | 
						
						
						
						
							 | 
							
								 | 
							
							                                    subItem.Display = tempField.Value.ToTrim().StartsWith(kv[1].ToTrim().Replace("%", "")); | 
						
						
						
						
							 | 
							
								 | 
							
							                                else | 
						
						
						
						
							 | 
							
								 | 
							
							                                    subItem.Display = tempField.Value.ToTrim() == kv[1].ToTrim(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    field.Visible = subItem.Display; | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (field.Visible) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        item.Display = false; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (idx == -1) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        idx = pList.IndexOf(field); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                if (!string.IsNullOrWhiteSpace(item.DisplayWhere.ToTrim())) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    //字段显示条件 | 
						
						
						
						
							 | 
							
								 | 
							
							                    string[] wheres = item.DisplayWhere.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); | 
						
						
						
						
							 | 
							
								 | 
							
							                    for (int i = 0; i < wheres.Length; i++) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        string[] kv = wheres[i].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries); | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (kv.Length != 2) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            LogAPI.Debug(string.Format("图层字段配置错误,FieldCfg中Name={0}", item.Name)); | 
						
						
						
						
							 | 
							
								 | 
							
							                            continue; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (kv[1].Contains("|"))//当前为测试项逻辑 | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            string[] kv2 = kv[1].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); | 
						
						
						
						
							 | 
							
								 | 
							
							                            var tempField = pList.FirstOrDefault(f => f.Key == kv[0] || f.FieldName == kv[0]); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (tempField != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (kv2[0].ToTrim().Contains("%") && kv2[1].ToTrim().Contains("%")) | 
						
						
						
						
							 | 
							
								 | 
							
							                                    item.Display = tempField.Value.ToTrim().StartsWith(kv2[0].ToTrim().Replace("%", "")) || tempField.Value.ToTrim().StartsWith(kv2[1].ToTrim().Replace("%", "")); | 
						
						
						
						
							 | 
							
								 | 
							
							                                else if (kv2[0].ToTrim().Contains("%")) | 
						
						
						
						
							 | 
							
								 | 
							
							                                    item.Display = tempField.Value.ToTrim().StartsWith(kv2[0].ToTrim().Replace("%", "")) || tempField.Value.ToTrim().Equals(kv2[1]); | 
						
						
						
						
							 | 
							
								 | 
							
							                                else | 
						
						
						
						
							 | 
							
								 | 
							
							                                    item.Display = tempField.Value.ToTrim() == kv2[1].ToTrim() || tempField.Value.ToTrim() == kv2[0].ToTrim(); | 
						
						
						
						
							 | 
							
								 | 
							
							                                GroupField.Visible = item.Display; | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            var tempField = pList.FirstOrDefault(f => f.Key == kv[0] || f.FieldName == kv[0]); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (tempField != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (kv[1].ToTrim().Contains("%")) | 
						
						
						
						
							 | 
							
								 | 
							
							                                    item.Display = tempField.Value.ToTrim().StartsWith(kv[1].ToTrim().Replace("%", "")); | 
						
						
						
						
							 | 
							
								 | 
							
							                                else | 
						
						
						
						
							 | 
							
								 | 
							
							                                    item.Display = tempField.Value.ToTrim() == kv[1].ToTrim(); | 
						
						
						
						
							 | 
							
								 | 
							
							                                GroupField.Visible = item.Display; | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                if (item.Display) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (idx == -1) idx = 0; | 
						
						
						
						
							 | 
							
								 | 
							
							                    var field = pList.FirstOrDefault(f => f.Key == item.Name || f.Key == item.AliasName); | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (field == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Value = val; | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Visible = item.Display; | 
						
						
						
						
							 | 
							
								 | 
							
							                        pList.Insert(idx, GroupField); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    GroupField.Visible = item.Display; | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                //单图斑展示字段间逻辑 | 
						
						
						
						
							 | 
							
								 | 
							
							                if (item.AliasName.Trim() == "地类信息" && !string.IsNullOrWhiteSpace(ddtbbz)) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    DataDicTionary dataDicTionary = GroupField.DicData.FirstOrDefault(x => string.IsNullOrWhiteSpace(x.CODE)); | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.DicData.Remove(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    GroupField.Visible = true; | 
						
						
						
						
							 | 
							
								 | 
							
							                    List<DataDicTionary> dataDicTionaries = new List<DataDicTionary>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    switch (ddtbbz) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        case "1301"://临时用地 | 
						
						
						
						
							 | 
							
								 | 
							
							                            string values = "05H1,0508,0601,0602,0603,0701,0702,08H1,08H2,08H2A,0809,0810,0810A,09,1001A,1002A,1003A,1004,1005,1007,1008,1009,1109,8801"; | 
						
						
						
						
							 | 
							
								 | 
							
							                            foreach (string code in values.Split(',')) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                dataDicTionary = GroupField.DicData.FirstOrDefault(x => x.CODE.Equals(code)); | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    dataDicTionaries.Add(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case "1302"://光伏板区 | 
						
						
						
						
							 | 
							
								 | 
							
							                            values = "0101,0102,0103,0204,0307,0401,0403,0404,0404A,0601,1101,1102,1103,1104,1104A,1105,1106,1107,1204,1205,1206,1207,8801,9901"; | 
						
						
						
						
							 | 
							
								 | 
							
							                            foreach (string code in values.Split(',')) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                dataDicTionary = GroupField.DicData.FirstOrDefault(x => x.CODE.Equals(code)); | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    dataDicTionaries.Add(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case "1303"://推土区 | 
						
						
						
						
							 | 
							
								 | 
							
							                            values = "8801,05H1,0508,0601,0602,0603,0701,0702,08H1,08H2,08H2A,0809,0810,0810A,09,1001"; | 
						
						
						
						
							 | 
							
								 | 
							
							                            foreach (string code in values.Split(',')) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                dataDicTionary = GroupField.DicData.FirstOrDefault(x => x.CODE.Equals(code)); | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    dataDicTionaries.Add(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case "1304"://拆除未尽区 | 
						
						
						
						
							 | 
							
								 | 
							
							                            values = "05H1,0508,0601,0602,0603,0701,0702,08H1,08H2,08H2A,0809,0810,0810A,09,1001,1001A,1002,1002A,1003,1003A,1004,1005,1007,1008,1009,1109,1202,8801"; | 
						
						
						
						
							 | 
							
								 | 
							
							                            foreach (string code in values.Split(',')) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                dataDicTionary = GroupField.DicData.FirstOrDefault(x => x.CODE.Equals(code)); | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    dataDicTionaries.Add(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case "1305"://路面范围 | 
						
						
						
						
							 | 
							
								 | 
							
							                            values = "1001,1003,8801"; | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (SysConfigsOprator.GetAppsetingValueByKey("ArearName").Equals("43")) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                values = "1003,8801"; | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            foreach (string code in values.Split(',')) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                dataDicTionary = GroupField.DicData.FirstOrDefault(x => x.CODE.Equals(code)); | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    dataDicTionaries.Add(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case "1306"://工厂化种植更新(待更新相关地类) | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        case "1307"://荒草地特征图斑(基础库地类建设用地或设施农用地) | 
						
						
						
						
							 | 
							
								 | 
							
							                            dataDicTionary = GroupField.DicData.FirstOrDefault(x => x.CODE.Equals("8801")); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                dataDicTionaries.Add(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                        default://一般地类不展示1001和1003地类 | 
						
						
						
						
							 | 
							
								 | 
							
							                            DataDicTionary[] dataDics = new DataDicTionary[GroupField.DicData.Count]; | 
						
						
						
						
							 | 
							
								 | 
							
							                            GroupField.DicData.CopyTo(dataDics); | 
						
						
						
						
							 | 
							
								 | 
							
							                            dataDicTionaries = dataDics.ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            values = "1001,1003,8801"; | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (SysConfigsOprator.GetAppsetingValueByKey("ArearName").Equals("43")) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                values = "1003,8801"; | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            foreach (string code in values.Split(',')) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                dataDicTionary = dataDicTionaries.FirstOrDefault(x => x.CODE.Equals(code)); | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    dataDicTionaries.Remove(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            break; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    GroupField.DicData = dataDicTionaries; | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                else if (item.AliasName.Equals("城镇村属性码") && !string.IsNullOrWhiteSpace(dlbm)) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (dlbm.Equals("9904") || dlbm.Equals("9905")) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Value = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Visible = false; | 
						
						
						
						
							 | 
							
								 | 
							
							                        continue; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    List<DataDicTionary> dataDicTionaries = new List<DataDicTionary>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    List<string> listValue = new List<string>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    //添加该字典的空选项 | 
						
						
						
						
							 | 
							
								 | 
							
							                    dataDicTionaries.Add(GroupField.DicData[0]); | 
						
						
						
						
							 | 
							
								 | 
							
							                    if ("05H1/0508/0701/0702/08H1/08H2/08H2A/0809/0810/0810A/1005/1201/1004".Split('/').Contains(dlbm)) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        listValue = "201,202,203".Split(',').ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    else if (dlbm.Equals("0601")) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        listValue = "201,202,203,201A,202A,203A".Split(',').ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    else if (dlbm.Equals("0602") || dlbm.Equals("0603")) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        listValue = "201,202,203,204".Split(',').ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    else if (dlbm.Equals("09")) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        listValue = "201,202,203,205".Split(',').ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    else | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        dataDicTionaries = GroupField.DicData; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    foreach (string code in listValue) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        DataDicTionary dataDicTionary = GroupField.DicData.FirstOrDefault(x => x.CODE.Equals(code)); | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            dataDicTionaries.Add(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    GroupField.DicData = dataDicTionaries; | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (dataDicTionaries.FirstOrDefault(x => x.CODE.Equals(GroupField.Value)) == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Value = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                else if (item.AliasName.Equals("种植属性") && !string.IsNullOrWhiteSpace(dlbm)) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    List<string> listValue = new List<string>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    string lstDLBM = "0101/0102/0103/0201/0202/0203/0204/0201K/0202K/0203K/0204K/0301/0302/0305/0307/0301K/0302K/0307K/0403K/1104K/0404A/1104/1104A/0404"; | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (!lstDLBM.Split('/').Contains(dlbm)) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Value = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Visible = false; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    else | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        List<DataDicTionary> dataDicTionaries = new List<DataDicTionary>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        //添加该字典的空选项 | 
						
						
						
						
							 | 
							
								 | 
							
							                        dataDicTionaries.Add(GroupField.DicData[0]); | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (dlbm.StartsWith("01")) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            listValue = "WG,LS,FLS,LYFL,LLJZ".Split(',').ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if ("0201/0202/0203/0204/0301/0302/0305/0307/1104/1104A/0404".Split('/').Contains(dlbm)) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            listValue = "JKHF,GCHF".Split(',').ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if ("0201K/0202K/0203K/0204K/0301K/0302K/0307K/0403K/1104K".Split('/').Contains(dlbm)) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            dataDicTionaries.Clear(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            listValue = "JKHF,GCHF".Split(',').ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if (dlbm.Equals("0404A")) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            listValue = "GCHF".Split(',').ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            dataDicTionaries = GroupField.DicData; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        foreach (string code in listValue) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            DataDicTionary dataDicTionary = GroupField.DicData.FirstOrDefault(x => x.CODE.Equals(code)); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                dataDicTionaries.Add(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.DicData = dataDicTionaries; | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (dataDicTionaries.FirstOrDefault(x => x.CODE.Equals(GroupField.Value)) == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            GroupField.Value = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                else if (item.AliasName.Equals("图斑细化") && !string.IsNullOrWhiteSpace(dlbm)) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    List<string> listValue = new List<string>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    string lstDLBM = "0101/0102/0103/0201/0202/0203/0204/0201K/0202K/0203K/0204K/0301/0302/0305/0307/0404/0404A/0601/0602/1001/1003"; | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (!lstDLBM.Split('/').Contains(dlbm)) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Value = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Visible = false; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    else | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        List<DataDicTionary> dataDicTionaries = new List<DataDicTionary>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        //添加该字典的空选项 | 
						
						
						
						
							 | 
							
								 | 
							
							                        dataDicTionaries.Add(GroupField.DicData[0]); | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (dlbm.StartsWith("01")) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            listValue = "HDGD,HQGD,LQGD,MQGD,SHGD,SMGD,YJGD".Split(',').ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if (dlbm.StartsWith("02")) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            listValue = new List<string>() { "LQYD" }; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if (dlbm.StartsWith("03") || dlbm.Equals("0404A")) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            listValue = new List<string>() { "LJTM" }; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if (dlbm.Equals("0404")) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            listValue = new List<string>() { "LJTM", "GCCD" }; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if (dlbm.Equals("0601")) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            listValue = "HDGY,GTGY,MTGY,SNGY,BLGY,DLGY".Split(',').ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else if (dlbm.Equals("0602") || dlbm.Equals("1001") || dlbm.Equals("1003")) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            listValue = new List<string>() { "FQ" }; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            dataDicTionaries = GroupField.DicData; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        foreach (string code in listValue) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            DataDicTionary dataDicTionary = GroupField.DicData.FirstOrDefault(x => x.CODE.Equals(code)); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (dataDicTionary != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                dataDicTionaries.Add(dataDicTionary); | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.DicData = dataDicTionaries; | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (dataDicTionaries.FirstOrDefault(x => x.CODE.Equals(GroupField.Value)) == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            //GroupField.Value = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                else if (item.AliasName.Equals("项目类型") || item.AliasName.Equals("项目名称") || item.AliasName.Equals("项目编号") || item.AliasName.Equals("地块名称")) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (sfxml.Equals("1")) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Visible = true; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    else | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Visible = false; | 
						
						
						
						
							 | 
							
								 | 
							
							                        GroupField.Value = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        void PropertyChangedEvent(object sender, PropertyChangedEventArgs e) | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            try | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                //if (MyPropertyGrid.ItemsSource == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                //    return; | 
						
						
						
						
							 | 
							
								 | 
							
							                PropertyGridDataStruct property = (PropertyGridDataStruct)sender; | 
						
						
						
						
							 | 
							
								 | 
							
							                if (property != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (!property.Visible) return; | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (Data is IFeature) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        int index = (Data as IFeature).Fields.FindField(property.Key); | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (index == -1) | 
						
						
						
						
							 | 
							
								 | 
							
							                            index = (Data as IFeature).Fields.FindFieldByAliasName(property.Key); | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (index != -1) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            SetFeatureValue(property); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            //Property.FirstOrDefault(f=>f.Key== property.Key) | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (Cfg == null) return; | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (Cfg.Layers.Count == 0) return; | 
						
						
						
						
							 | 
							
								 | 
							
							                            LayerInfo layer = Cfg.Layers[0]; | 
						
						
						
						
							 | 
							
								 | 
							
							                            var fieldItem = layer.Fields.FirstOrDefault(f => f.Name == property.Key || f.AliasName == property.Key); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (property.Value == "-") { property.Value = " - "; }//地类信息处理 | 
						
						
						
						
							 | 
							
								 | 
							
							                            string[] values = property.Value.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (values.Length != fieldItem.Fields.Count) return; | 
						
						
						
						
							 | 
							
								 | 
							
							                            for (int i = 0; i < fieldItem.Fields.Count; i++) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                var hidItem = Property.FirstOrDefault(f => f.Key == fieldItem.Fields[i].Name || f.Key == fieldItem.Fields[i].AliasName); | 
						
						
						
						
							 | 
							
								 | 
							
							                                if (hidItem != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    hidItem.Value = values[i].ToTrim(); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    SetFeatureValue(hidItem); | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                            RefreshView(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    //MyPropertyGrid.ItemsSource = MyPropertyGrid.ItemsSource; | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                IFeature feature = Data as IFeature; | 
						
						
						
						
							 | 
							
								 | 
							
							                Platform.Instance.SendMsg(new NotifyMsgPackage() { Content = feature, MsgType = "RefreshViewAttrTable" }); | 
						
						
						
						
							 | 
							
								 | 
							
							                Platform.Instance.SendMsg(new NotifyMsgPackage() { Content = feature, MsgType = "StartCheckD_BGTBMethod" }); | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            catch (Exception ex) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                //LogAPI.Debug("属性联动异常:" + ex); | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							                LogAPI.Debug("属性改变事件期间 属性联动异常,异常信息如下:"); | 
						
						
						
						
							 | 
							
								 | 
							
							                LogAPI.Debug(ex); | 
						
						
						
						
							 | 
							
								 | 
							
							                LogAPI.Debug("属性改变事件期间 属性联动异常信息结束"); | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							        private void SetFeatureValue(PropertyGridDataStruct proData) | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            if (Data is IFeature) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                int index = (Data as IFeature).Fields.FindField(proData.Key); | 
						
						
						
						
							 | 
							
								 | 
							
							                if (index == -1) | 
						
						
						
						
							 | 
							
								 | 
							
							                    index = (Data as IFeature).Fields.FindFieldByAliasName(proData.Key); | 
						
						
						
						
							 | 
							
								 | 
							
							                if (index != -1) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    var val = (Data as IFeature).get_Value(index); | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (!val.Equals(proData.Value)) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (val is DBNull && string.IsNullOrWhiteSpace(proData.Value)) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        else | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (editor.EditState == esriEngineEditState.esriEngineStateEditing) | 
						
						
						
						
							 | 
							
								 | 
							
							                            { | 
						
						
						
						
							 | 
							
								 | 
							
							                                editor.StartOperation(); | 
						
						
						
						
							 | 
							
								 | 
							
							                                try | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    if (proData.Key == "耕地等别" && string.IsNullOrEmpty(proData.Value)) | 
						
						
						
						
							 | 
							
								 | 
							
							                                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                                        (Data as IFeature).set_Value(index, DBNull.Value); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                                    else if (proData.Key == "线状地物宽度" && string.IsNullOrEmpty(proData.Value)) | 
						
						
						
						
							 | 
							
								 | 
							
							                                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                                        (Data as IFeature).set_Value(index, DBNull.Value); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                                    else | 
						
						
						
						
							 | 
							
								 | 
							
							                                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                                        if ((Data as IFeature).Fields.get_Field(index).Length < proData.Value.Length) | 
						
						
						
						
							 | 
							
								 | 
							
							                                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                                            MessageHelper.ShowError(proData.Key + ":填写值长度过长!"); | 
						
						
						
						
							 | 
							
								 | 
							
							                                            editor.AbortOperation(); | 
						
						
						
						
							 | 
							
								 | 
							
							                                            return; | 
						
						
						
						
							 | 
							
								 | 
							
							                                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                                        (Data as IFeature).set_Value(index, proData.Value); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                                    (Data as IFeature).Store(); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    if (proData.Visible) | 
						
						
						
						
							 | 
							
								 | 
							
							                                        RefreshView(); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    if (editor.EditState == esriEngineEditState.esriEngineStateEditing) | 
						
						
						
						
							 | 
							
								 | 
							
							                                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                                        editor.StopOperation("Attribute update"); | 
						
						
						
						
							 | 
							
								 | 
							
							                                        ExecuteDataCheck(Data as IFeature); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                                catch (Exception ex2) | 
						
						
						
						
							 | 
							
								 | 
							
							                                { | 
						
						
						
						
							 | 
							
								 | 
							
							                                    LogAPI.Debug("属性改变事件中 结束编辑操作期间 时异常,异常信息如下:"); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    LogAPI.Debug(ex2); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    LogAPI.Debug("属性改变事件中 结束编辑操作期间 时异常信息结束"); | 
						
						
						
						
							 | 
							
								 | 
							
							                                    editor.AbortOperation(); | 
						
						
						
						
							 | 
							
								 | 
							
							                                } | 
						
						
						
						
							 | 
							
								 | 
							
							                            } | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        ControlsEditingSaveCommandClass saveCmd = null; | 
						
						
						
						
							 | 
							
								 | 
							
							        public void SaveEdit() | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            //if (saveCmd == null) | 
						
						
						
						
							 | 
							
								 | 
							
							            //{ | 
						
						
						
						
							 | 
							
								 | 
							
							            //    saveCmd = new ControlsEditingSaveCommandClass(); | 
						
						
						
						
							 | 
							
								 | 
							
							            //    saveCmd.OnCreate(MapsManager.Instance.MapService.Hook); | 
						
						
						
						
							 | 
							
								 | 
							
							            //} | 
						
						
						
						
							 | 
							
								 | 
							
							            //if (saveCmd.Enabled) | 
						
						
						
						
							 | 
							
								 | 
							
							            //{ | 
						
						
						
						
							 | 
							
								 | 
							
							            //    saveCmd.OnClick(); | 
						
						
						
						
							 | 
							
								 | 
							
							            //} | 
						
						
						
						
							 | 
							
								 | 
							
							            SetVisible(Property); | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							        public void ExecuteDataCheck(IFeature feature) | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            if (editor.EditState != esriEngineEditState.esriEngineStateEditing) | 
						
						
						
						
							 | 
							
								 | 
							
							                return; | 
						
						
						
						
							 | 
							
								 | 
							
							            IDataCheckHelper dataCheckHelper = UIShell.OSGi.BundleRuntime.Instance.GetFirstOrDefaultService<IDataCheckHelper>(); | 
						
						
						
						
							 | 
							
								 | 
							
							            if (dataCheckHelper == null) return; | 
						
						
						
						
							 | 
							
								 | 
							
							            dataCheckHelper.DataCheckByThread(new CheckParametr() | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                CheckType = enumCheckType.Attribute | enumCheckType.Graphic, | 
						
						
						
						
							 | 
							
								 | 
							
							                DataSource = feature, | 
						
						
						
						
							 | 
							
								 | 
							
							                IDataCheckName = "BGQDataCheck" | 
						
						
						
						
							 | 
							
								 | 
							
							            }); | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        private List<DataDicTionary> GetNoGroupDic(DicTypeEnum pDicType, List<DataDicTionary> dicList = null) | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            List<DataDicTionary> result = null; | 
						
						
						
						
							 | 
							
								 | 
							
							            try | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                string s = GetDicTypeID(pDicType); | 
						
						
						
						
							 | 
							
								 | 
							
							                if (string.IsNullOrWhiteSpace(s)) | 
						
						
						
						
							 | 
							
								 | 
							
							                    return result; | 
						
						
						
						
							 | 
							
								 | 
							
							                List<DataDicTionary> tempDic = dicList; | 
						
						
						
						
							 | 
							
								 | 
							
							                if (dicList == null || dicList.Count == 0) | 
						
						
						
						
							 | 
							
								 | 
							
							                    tempDic = GetAllDic(); | 
						
						
						
						
							 | 
							
								 | 
							
							                if (tempDic == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                    return result; | 
						
						
						
						
							 | 
							
								 | 
							
							                foreach (DataDicTionary item in tempDic) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (item.OWNERDIC == s) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (result == null) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            result = new List<DataDicTionary>(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            result.Add(new DataDicTionary() { CODE = "", NAME = "", DisplayName = "" }); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        result.Add(item); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            catch (Exception ex) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                throw ex; | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            return result; | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							        private List<DataDicTionary> GetAllDic() | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            DataTable dt = null; | 
						
						
						
						
							 | 
							
								 | 
							
							            List<DataDicTionary> result = new List<DataDicTionary>(); | 
						
						
						
						
							 | 
							
								 | 
							
							            IRDBHelper rdbHelper = null; | 
						
						
						
						
							 | 
							
								 | 
							
							            try | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                if ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    string dbPath = ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) as ProjectInfo).GetDicDataPath(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    if (!string.IsNullOrWhiteSpace(dbPath)) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						
						
						
						
							 | 
							
								 | 
							
							                        string strSQL = "select * from Sys_DicDetail"; | 
						
						
						
						
							 | 
							
								 | 
							
							                        dt = rdbHelper.ExecuteDatatable("Dic", strSQL, true); | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (dt != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            result = KGIS.Framework.Utils.Utility.TBToList.ToList<DataDicTionary>(dt).OrderBy(x => x.CODE).ToList(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            result.ForEach(x => x.DisplayName = x.CODE + "-" + x.NAME); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            catch (Exception ex) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                LogAPI.Debug(ex); | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            finally | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                if (rdbHelper != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    rdbHelper.DisConnect(); | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                if (dt != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    dt.Clear(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    dt.Dispose(); | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            return result; | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							        private Dictionary<string, string> DicTypes = new Dictionary<string, string>(); | 
						
						
						
						
							 | 
							
								 | 
							
							        public string GetDicTypeID(DicTypeEnum pDicType, bool GetNewDic = false) | 
						
						
						
						
							 | 
							
								 | 
							
							        { | 
						
						
						
						
							 | 
							
								 | 
							
							            string result = string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							            DataTable dtDicTypeID = null; | 
						
						
						
						
							 | 
							
								 | 
							
							            try | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                if (dtDicTypeID == null || GetNewDic) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    IRDBHelper rdbHelper = null; | 
						
						
						
						
							 | 
							
								 | 
							
							                    try | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        string dbPath = ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) as ProjectInfo).GetDicDataPath(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (string.IsNullOrWhiteSpace(dbPath)) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            LogAPI.Debug("GetDicDataPath 获取失败"); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                        rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						
						
						
						
							 | 
							
								 | 
							
							                        string strSQL = "select ID,ALIASNAME from Sys_DicManage ";//WHERE ALIASNAME = '" + pDicType + "'"; | 
						
						
						
						
							 | 
							
								 | 
							
							                        dtDicTypeID = rdbHelper.ExecuteDatatable("DicType", strSQL, true); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    catch (Exception ex) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        LogAPI.Debug(ex); | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                    finally | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (rdbHelper != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            rdbHelper.DisConnect(); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                if (dtDicTypeID != null && dtDicTypeID.Rows.Count > 0) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    foreach (DataRow item in dtDicTypeID.Rows) | 
						
						
						
						
							 | 
							
								 | 
							
							                    { | 
						
						
						
						
							 | 
							
								 | 
							
							                        if (item[0] != null && !(item[0] is DBNull)) | 
						
						
						
						
							 | 
							
								 | 
							
							                        { | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (item[1].ToString() == pDicType.ToString()) | 
						
						
						
						
							 | 
							
								 | 
							
							                                result = item[0].ToString(); | 
						
						
						
						
							 | 
							
								 | 
							
							                            if (DicTypes.ContainsKey(item[0].ToString())) | 
						
						
						
						
							 | 
							
								 | 
							
							                                continue; | 
						
						
						
						
							 | 
							
								 | 
							
							                            DicTypes.Add(item[0].ToString(), item[1].ToString()); | 
						
						
						
						
							 | 
							
								 | 
							
							                        } | 
						
						
						
						
							 | 
							
								 | 
							
							                    } | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							                return result; | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            catch (Exception ex) | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                throw ex; | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            finally | 
						
						
						
						
							 | 
							
								 | 
							
							            { | 
						
						
						
						
							 | 
							
								 | 
							
							                if (dtDicTypeID != null) | 
						
						
						
						
							 | 
							
								 | 
							
							                { | 
						
						
						
						
							 | 
							
								 | 
							
							                    dtDicTypeID.Clear(); | 
						
						
						
						
							 | 
							
								 | 
							
							                    dtDicTypeID.Dispose(); | 
						
						
						
						
							 | 
							
								 | 
							
							                } | 
						
						
						
						
							 | 
							
								 | 
							
							            } | 
						
						
						
						
							 | 
							
								 | 
							
							            return string.Empty; | 
						
						
						
						
							 | 
							
								 | 
							
							        } | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    } | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 |