Exemple #1
0
        public static esriFieldType ReturnFieldType(IDataset dataset, String fieldName)
        {
            if (dataset == null)
            {
                throw new ArgumentNullException("dataset");
            }
            IFields2 fields = null;

            if (dataset.Type == esriDatasetType.esriDTTable)
            {
                fields = ((ITable)dataset).Fields as IFields2;
            }
            else if (dataset.Type == esriDatasetType.esriDTFeatureClass)
            {
                fields = ((IFeatureClass)dataset).Fields as IFields2;
            }

            int fdIdx = -1;

            ISQLSyntax SQLsyn = dataset.Workspace as ISQLSyntax;

            fields.FindFieldIgnoreQualification(SQLsyn, fieldName, out fdIdx);
            if (fdIdx != -1)
            {
                IField aFd = fields.Field[fdIdx];
                Debug.WriteLine(aFd.Name);
                Debug.WriteLine(aFd.Type.ToString());
                return(aFd.Type);
            }

            throw new Exception("Cannot find this field");
        }
Exemple #2
0
        private void LoadFields(IFeatureClass sourceFeatCls, IFeatureClass targetFeatCls)
        {
            IFields2        sourceFields = sourceFeatCls.Fields as IFields2;
            IFields2        targetFields = targetFeatCls.Fields as IFields2;
            DataGridViewRow dgvRow;

            dataGridViewX1.Rows.Clear();

            for (int i = 0; i < sourceFields.FieldCount; i++)
            {
                if (sourceFields.get_Field(i).Type == esriFieldType.esriFieldTypeGeometry || sourceFields.get_Field(i).Editable == false)
                {
                    continue;
                }

                dgvRow = new DataGridViewRow();
                dgvRow = dataGridViewX1.Rows[dataGridViewX1.Rows.Add()];
                dgvRow.Cells[1].Value = sourceFields.get_Field(i).AliasName;

                DataGridViewCheckBoxCell dgvCheckBoxCell = new DataGridViewCheckBoxCell();
                dgvCheckBoxCell = dgvRow.Cells[0] as DataGridViewCheckBoxCell;

                DataGridViewComboBoxCell dgvComCell = new DataGridViewComboBoxCell();
                dgvComCell = dgvRow.Cells[2] as DataGridViewComboBoxCell;

                for (int j = 0; j < targetFields.FieldCount; j++)
                {
                    if (targetFields.get_Field(j).Type == esriFieldType.esriFieldTypeGeometry || targetFields.get_Field(j).Editable == false)
                    {
                        continue;
                    }
                    dgvComCell.Items.Add(targetFields.get_Field(j).AliasName);

                    if (targetFields.get_Field(j).AliasName == sourceFields.get_Field(i).AliasName)
                    {
                        dgvComCell.Value      = targetFields.get_Field(j).AliasName;
                        dgvCheckBoxCell.Value = false;
                    }
                }
            }
        }
        public static bool bAddFields(ITable pTable, IFields2 pNewFields)
        {
            // Error Handling
            const string functionName = "bAddFields";

            try
            {
                int i;
                IField pField;
                string sFieldName;

                for (i = 0; i < pNewFields.FieldCount; i++)
                {
                    pField = pNewFields.Field[i];
                    sFieldName = pField.Name;

                    IFieldEdit pFldEdit;

                    if (pTable.FindField(sFieldName) < 0 && pField.Type != esriFieldType.esriFieldTypeOID && pField.Type != esriFieldType.esriFieldTypeGUID)
                    {
                        pFldEdit = (IFieldEdit)pField;
                        pFldEdit.Editable_2 = true;
                        pTable.AddField(pField);
                    }
                }
                return true;
            }
            catch (Exception e)
            {
                MessageBox.Show(functionName + " :: " + e.Message, "SF10", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
        }