コード例 #1
0
        /// <summary>
        /// 获取选中图层的字段
        /// </summary>
        private void GetFields()
        {
            try
            {
                string        sLayerName = (string)cboLayers.SelectedItem;
                IFeatureLayer _featureLayer;
                IFeatureClass _featureClass = null;
                IFields       _fields;
                IDataset      _dataSet;

                _featureLayer  = (IFeatureLayer)MapOperAPI.GetLayerFromMapByName(m_Map, sLayerName);
                m_FeatureLayer = _featureLayer;

                if (_featureLayer != null)
                {
                    _featureClass = _featureLayer.FeatureClass;
                }
                this.cboFields.Properties.Items.Clear();
                this.cboFieldsValue.Properties.Items.Clear();

                m_FieldTable = new Hashtable();
                if (_featureClass != null)
                {
                    _dataSet = _featureClass as IDataset;
                    _fields  = _featureClass.Fields;
                    if (_dataSet.Workspace.Type == esriWorkspaceType.esriFileSystemWorkspace ||
                        _dataSet.Workspace.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
                    {
                        for (int i = 0; i < _fields.FieldCount; i++)
                        {
                            IField pField = _fields.get_Field(i);
                            if (pField.Type != esriFieldType.esriFieldTypeGeometry &&
                                pField.Type != esriFieldType.esriFieldTypeBlob &&
                                pField.Type != esriFieldType.esriFieldTypeRaster)
                            {
                                cboFields.Properties.Items.Add(pField.AliasName);
                                m_FieldTable.Add(pField.AliasName, pField.Name);
                                //TreeListNode node = this.treeListFields.AppendNode(new object[] { '[' + _fields.get_Field(i).Name + ']', '[' + _fields.get_Field(i).AliasName + ']' }, null);
                            }
                        }
                    }
                    else if (_dataSet.Workspace.Type == esriWorkspaceType.esriLocalDatabaseWorkspace)
                    {
                        for (int i = 0; i < _fields.FieldCount; i++)
                        {
                            IField pField = _fields.get_Field(i);
                            if (pField.Type != esriFieldType.esriFieldTypeGeometry &&
                                pField.Type != esriFieldType.esriFieldTypeBlob &&
                                pField.Type != esriFieldType.esriFieldTypeRaster)
                            {
                                if (pField.Name.ToUpper().Contains("OBJECTID") || pField.AliasName.ToLower().Contains("shape"))
                                {
                                    continue;
                                }

                                cboFields.Properties.Items.Add(pField.AliasName);
                                m_FieldTable.Add(pField.AliasName, pField.Name);
                                //TreeListNode node = this.treeListFields.AppendNode(new object[] { '[' + _fields.get_Field(i).Name + ']', '[' + _fields.get_Field(i).AliasName + ']' }, null);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }