ILayer layer = m_hookHelper.FocusMap.get_Layer(layerIndex); //输入图层1
IFeatureLayer flayer = (IFeatureLayer)layer;
IFeatureClass fclass = flayer.FeatureClass;
int featureCount = fclass.FeatureCount(null);
int idField = -2,proField=-2; //第一列和第二列对应的属性字段的序号
if ((idField=fclass.FindField(fields[0]))==-1) //若在图层中不存在第一列所对应的属性字段,则退出
{
MessageBox.Show("图层中找不到与第一列对应的属性字段");
return;
}
if ((proField=fclass.FindField(fields[1]))==-1)
{ //若图层中不存在第二列对应的属性字段,则在该图层上添加字段
#region 添加字段
IField newField = new FieldClass();
IFieldEdit fieldEdit = (IFieldEdit)newField;
fieldEdit.Name_2 = fields[1];
fieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
fclass.AddField(newField);
#endregion
}
#region 修改字段的值
IDataset dataset = fclass as IDataset;
IWorkspace workspace = dataset.Workspace;
IWorkspaceEdit wse = workspace as IWorkspaceEdit;
wse.StartEditing(false);
wse.StartEditOperation();
proField = fclass.FindField(fields[1]);
for (int i = 0; i < featureCount; i++)
{
tmp = fclass.GetFeature(i).get_Value(idField).ToString();
for (int j = 0; j < pro1.Length; j++)
{
if (tmp == pro1[j])
{
fclass.GetFeature(i).set_Value(proField, pro2[j]);
fclass.GetFeature(i).Store();
break;
}
}
}
wse.StopEditOperation();
wse.StopEditing(true);
#endregion
IFeatureLayer flayer = (IFeatureLayer)layer;
IFeatureClass fclass = flayer.FeatureClass;
int featureCount = fclass.FeatureCount(null);
int idField = -2,proField=-2; //第一列和第二列对应的属性字段的序号
if ((idField=fclass.FindField(fields[0]))==-1) //若在图层中不存在第一列所对应的属性字段,则退出
{
MessageBox.Show("图层中找不到与第一列对应的属性字段");
return;
}
if ((proField=fclass.FindField(fields[1]))==-1)
{ //若图层中不存在第二列对应的属性字段,则在该图层上添加字段
#region 添加字段
IField newField = new FieldClass();
IFieldEdit fieldEdit = (IFieldEdit)newField;
fieldEdit.Name_2 = fields[1];
fieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
fclass.AddField(newField);
#endregion
}
#region 修改字段的值
IDataset dataset = fclass as IDataset;
IWorkspace workspace = dataset.Workspace;
IWorkspaceEdit wse = workspace as IWorkspaceEdit;
wse.StartEditing(false);
wse.StartEditOperation();
proField = fclass.FindField(fields[1]);
for (int i = 0; i < featureCount; i++)
{
tmp = fclass.GetFeature(i).get_Value(idField).ToString();
for (int j = 0; j < pro1.Length; j++)
{
if (tmp == pro1[j])
{
fclass.GetFeature(i).set_Value(proField, pro2[j]);
fclass.GetFeature(i).Store();
break;
}
}
}
wse.StopEditOperation();
wse.StopEditing(true);
#endregion