You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							140 lines
						
					
					
						
							4.6 KiB
						
					
					
				
			
		
		
	
	
							140 lines
						
					
					
						
							4.6 KiB
						
					
					
				using DevExpress.XtraEditors; | 
						|
using ESRI.ArcGIS.Carto; | 
						|
using ESRI.ArcGIS.Geodatabase; | 
						|
using KGIS.Framework.Utils.Helper; | 
						|
using System; | 
						|
using System.Collections; | 
						|
using System.Collections.Generic; | 
						|
using System.ComponentModel; | 
						|
using System.Data; | 
						|
using System.Drawing; | 
						|
using System.Linq; | 
						|
using System.Text; | 
						|
using System.Threading.Tasks; | 
						|
using System.Windows.Forms; | 
						|
 | 
						|
namespace KGIS.Plugin.LayerProperty.View | 
						|
{ | 
						|
    public partial class FormAddValue : XtraForm | 
						|
    { | 
						|
        public string mFieldValue; | 
						|
        public ITable mTable; | 
						|
        public string mFieldName; | 
						|
        public IFeatureLayer2 mFeatrueLayer; | 
						|
        public FormAddValue() | 
						|
        { | 
						|
            InitializeComponent(); | 
						|
        } | 
						|
        private void btnOk_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            if (this.txtValue.Text.Trim() == "") | 
						|
            { | 
						|
                MessageHelper.ShowTips("请输入数值!"); | 
						|
                return; | 
						|
            } | 
						|
            this.mFieldValue = this.txtValue.Text.Trim(); | 
						|
            base.DialogResult = DialogResult.OK; | 
						|
            base.Close(); | 
						|
        } | 
						|
        private void btnCancel_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            base.DialogResult = DialogResult.Cancel; | 
						|
            base.Close(); | 
						|
        } | 
						|
        private void btnShowAll_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            this.listValue.Items.Clear(); | 
						|
            ArrayList arrayList = this.AddAllFieldValue(this.mTable, this.mFieldName); | 
						|
            if (arrayList == null) | 
						|
            { | 
						|
                MessageHelper.ShowTips("读取图层字段属性值出错"); | 
						|
                return; | 
						|
            } | 
						|
            this.listValue.Items.Clear(); | 
						|
            for (int i = 0; i < arrayList.Count; i++) | 
						|
            { | 
						|
                this.listValue.Items.Add(arrayList[i]); | 
						|
            } | 
						|
        } | 
						|
        private ArrayList AddAllFieldValue(ITable vTable, string vFieldName) | 
						|
        { | 
						|
            long num = 0L; | 
						|
            ArrayList result; | 
						|
            try | 
						|
            { | 
						|
                IDataset dataset = (IDataset)vTable; | 
						|
                IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)dataset.Workspace; | 
						|
                IQueryDef queryDef = featureWorkspace.CreateQueryDef(); | 
						|
                queryDef.Tables = this.GetLayerPhysicalName(this.mFeatrueLayer); | 
						|
                queryDef.SubFields = "DISTINCT (" + vFieldName + ")"; | 
						|
                ArrayList arrayList = new ArrayList(); | 
						|
                ICursor cursor = queryDef.Evaluate(); | 
						|
                for (IRow row = cursor.NextRow(); row != null; row = cursor.NextRow()) | 
						|
                { | 
						|
                    string text = row.get_Value(0).ToString().Trim(); | 
						|
                    if (!text.Equals("")) | 
						|
                    { | 
						|
                        arrayList.Add(text); | 
						|
                    } | 
						|
                    num += 1L; | 
						|
                    if (num == 1000L && MessageHelper.ShowYesNoAndTips("读取到的值已经大于1000个,可能需要花费很长时间,是否继续?") == DialogResult.No) | 
						|
                    { | 
						|
                        break; | 
						|
                    } | 
						|
                } | 
						|
                result = arrayList; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
                result = null; | 
						|
            } | 
						|
            return result; | 
						|
        } | 
						|
        private string GetLayerPhysicalName(IFeatureLayer2 featLyr) | 
						|
        { | 
						|
            IFeatureClass featureClass = featLyr.FeatureClass; | 
						|
            IDataset dataset = (IDataset)featureClass; | 
						|
            return dataset.Name; | 
						|
        } | 
						|
        private void listValue_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            if (this.listValue.ItemCount == 0) | 
						|
            { | 
						|
                return; | 
						|
            } | 
						|
            if (this.listValue.SelectedIndex < 0) | 
						|
            { | 
						|
                return; | 
						|
            } | 
						|
            this.txtValue.Text = this.listValue.SelectedItem.ToString(); | 
						|
        } | 
						|
        public void SetValues(int vValueNum) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.txtValue.Text = ""; | 
						|
                string text = this.listValue.Items[0].ToString(); | 
						|
                if (text != null) | 
						|
                { | 
						|
                    this.txtValue.Text = text; | 
						|
                } | 
						|
            } | 
						|
            catch (Exception value) | 
						|
            { | 
						|
                Console.Write(value); | 
						|
            } | 
						|
        } | 
						|
        private void btnAddNew_Click(object sender, System.EventArgs e) | 
						|
        { | 
						|
            if (!this.listValue.Items.Contains(this.txtValue.Text)) | 
						|
            { | 
						|
                this.listValue.Items.Add(this.txtValue.Text); | 
						|
            } | 
						|
        } | 
						|
        private void listValue_SelectedValueChanged(object sender, System.EventArgs e) | 
						|
        { | 
						|
            this.btnOk.Enabled = true; | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |