1、创建属性表字段项:
public IMapControl2 pMapControl;
public IMap pMap;
public int LayerIndex;
public string LayerName;
private void button1_Click(object sender, EventArgs e)
{
IFeatureLayer pFeatureLayer = pMap.get_Layer(LayerIndex) as IFeatureLayer;
IFeatureClass pFc = pFeatureLayer.FeatureClass;
IClass pClass = pFc as IClass;
IFieldsEdit fldsE = pFc.Fields as IFieldsEdit;
IField fld = new FieldClass();
IFieldEdit2 fldE = fld as IFieldEdit2;
fldE.Type_2 = esriFieldType.esriFieldTypeString;
fldE.Name_2 = "123456";
fldE.Length_2 = 20;
pClass.AddField(fld);
}
2、对字段项重新赋值
private void button2_Click(object sender, EventArgs e)
{
//找到图层
IFeatureLayer pFeatureLayer = pMap.get_Layer(LayerIndex) as IFeatureLayer;
IFeatureClass pFc = pFeatureLayer.FeatureClass;
IFeatureCursor pFeatureCursor = pFeatureLayer.FeatureClass.Search(null, false);
IFeature pFeature = pFeatureCursor.NextFeature();
IFields pFields = pFeature.Fields;
// IField pField = pFeature.Fields;
IClass pClass = pFc as IClass;
//使要素处于编辑状态
IDataset dataset = (IDataset)pFc;
IWorkspace workspace = dataset.Workspace;
IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;
workspaceEdit.StartEditing(true);
workspaceEdit.StartEditOperation();
while (pFeature != null)
{
string[] fldvalue = new string[pFields.FieldCount];
for (int i = 0; i < pFields.FieldCount; i++)
{
if (pFields.get_Field(i).Name == "Shape")
{
fldvalue[i] = Convert.ToString(pFeature.Shape.GeometryType);
//修改属性值
int field1 = pFields.FindField("123");
int field2 = pFields.FindField("123456");
int field3 = pFields.FindField("XXX");
pFeature.set_Value(field1, 123);