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.
		
		
		
		
		
			
		
			
				
					
					
						
							120 lines
						
					
					
						
							4.3 KiB
						
					
					
				
			
		
		
	
	
							120 lines
						
					
					
						
							4.3 KiB
						
					
					
				using System; | 
						|
using System.Collections.Generic; | 
						|
using System.ComponentModel; | 
						|
using System.Drawing; | 
						|
using System.Data; | 
						|
using System.Linq; | 
						|
using System.Text; | 
						|
using System.Threading.Tasks; | 
						|
using System.Windows.Forms; | 
						|
using DevExpress.XtraGrid.Columns; | 
						|
using ESRI.ArcGIS.Geodatabase; | 
						|
 | 
						|
namespace KGIS.Plugin.LayerProperty.View.UC_Controls | 
						|
{ | 
						|
    public partial class UCFieldsList : UserControl | 
						|
    { | 
						|
        public UCFieldsList() | 
						|
        { | 
						|
            InitializeComponent(); | 
						|
        } | 
						|
 | 
						|
        public void InitUC(IFields fields) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                DataTable dataTable = this.CreateDataTable(); | 
						|
                if (fields != null) | 
						|
                { | 
						|
                    for (int i = 0; i < fields.FieldCount; i++) | 
						|
                    { | 
						|
                        IField field = fields.get_Field(i); | 
						|
                        this.CreateDataRow(field, dataTable); | 
						|
                    } | 
						|
                } | 
						|
                this.SetDataSource(dataTable); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private DataTable CreateDataTable() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                DataTable dataTable = new DataTable(); | 
						|
                DataColumn dataColumn = new DataColumn("name", Type.GetType("System.String")); | 
						|
                dataColumn.Caption = "名称"; | 
						|
                dataTable.Columns.Add(dataColumn); | 
						|
                dataColumn = new DataColumn("alias", Type.GetType("System.String")); | 
						|
                dataColumn.Caption = "别名"; | 
						|
                dataTable.Columns.Add(dataColumn); | 
						|
                dataColumn = new DataColumn("datatype", Type.GetType("System.String")); | 
						|
                dataColumn.Caption = "类型"; | 
						|
                dataTable.Columns.Add(dataColumn); | 
						|
                dataColumn = new DataColumn("length", Type.GetType("System.Int32")); | 
						|
                dataColumn.Caption = "长度"; | 
						|
                dataTable.Columns.Add(dataColumn); | 
						|
                dataColumn = new DataColumn("precision", Type.GetType("System.Int32")); | 
						|
                dataColumn.Caption = "精度"; | 
						|
                dataTable.Columns.Add(dataColumn); | 
						|
                dataColumn = new DataColumn("scale", Type.GetType("System.Int32")); | 
						|
                dataColumn.Caption = "数值范围"; | 
						|
                dataTable.Columns.Add(dataColumn); | 
						|
                dataColumn = new DataColumn("numberformat", Type.GetType("System.String")); | 
						|
                dataColumn.Caption = "数字格式"; | 
						|
                dataTable.Columns.Add(dataColumn); | 
						|
                return dataTable; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
            return null; | 
						|
        } | 
						|
        private void CreateDataRow(IField field, DataTable dt) | 
						|
        { | 
						|
            DataRow dataRow = dt.NewRow(); | 
						|
            try | 
						|
            { | 
						|
                dataRow["name"] = field.Name; | 
						|
                dataRow["alias"] = field.AliasName; | 
						|
                string value = field.Type.ToString().Substring(13); | 
						|
                dataRow["datatype"] = value; | 
						|
                dataRow["length"] = field.Length; | 
						|
                dataRow["precision"] = field.Precision; | 
						|
                dataRow["scale"] = field.Scale; | 
						|
                dt.Rows.Add(dataRow); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
        private void SetDataSource(DataTable source) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                this.gridViewMain.BeginDataUpdate(); | 
						|
                this.gridViewMain.Columns.Clear(); | 
						|
                this.gridViewMain.OptionsView.ColumnAutoWidth = false; | 
						|
                this.gridMainCtrl.DataSource = source; | 
						|
                this.gridMainCtrl.RefreshDataSource(); | 
						|
                this.gridViewMain.PopulateColumns(); | 
						|
                foreach (GridColumn gridColumn in this.gridViewMain.Columns) | 
						|
                { | 
						|
                    gridColumn.Caption = source.Columns[gridColumn.FieldName].Caption; | 
						|
                } | 
						|
                this.gridViewMain.OptionsBehavior.Editable = false; | 
						|
                this.gridViewMain.OptionsView.ColumnAutoWidth = false; | 
						|
                this.gridViewMain.BestFitColumns(); | 
						|
                this.gridViewMain.EndDataUpdate(); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //TraceEvent.AddException(ex); | 
						|
            } | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |