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"); }
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; } }