IFeatureLayer zdlyr = AEmethod.FindFeatLyr(this.axMapControl1.Map, "ZD");
IFeatureCursor zdcs = zdlyr.Search(null, false);
for (IFeature zdfeat = zdcs.NextFeature(); zdfeat != null; zdfeat = zdcs.NextFeature())
{
List<string>[] zdsz = AEmethod.getzdszlist(zdfeat, zdlyr, "宗地名称", 0.1);
string zddz = "";
string zdnz = "";
string zdxz = "";
string zdbz = "";
if (zdsz[0].Count > 0)
{
zddz = zdsz[0][0];
}
if (zdsz[1].Count > 0)
{
zdnz = zdsz[1][0];
}
if (zdsz[2].Count > 0)
{
zdxz = zdsz[2][0];
}
if (zdsz[3].Count > 0)
{
zdbz = zdsz[3][0];
}
int col = zdfeat.Fields.FindField("新宗地东至");
zdfeat.set_Value(col, zddz);
col = zdfeat.Fields.FindField("新宗地南至");
zdfeat.set_Value(col, zdnz);
col = zdfeat.Fields.FindField("新宗地西至");
zdfeat.set_Value(col, zdxz);
col = zdfeat.Fields.FindField("新宗地北至");
zdfeat.set_Value(col, zdbz);
zdcs.UpdateFeature(zdfeat);
}
IFeatureCursor zdcs = zdlyr.Search(null, false);
for (IFeature zdfeat = zdcs.NextFeature(); zdfeat != null; zdfeat = zdcs.NextFeature())
{
List<string>[] zdsz = AEmethod.getzdszlist(zdfeat, zdlyr, "宗地名称", 0.1);
string zddz = "";
string zdnz = "";
string zdxz = "";
string zdbz = "";
if (zdsz[0].Count > 0)
{
zddz = zdsz[0][0];
}
if (zdsz[1].Count > 0)
{
zdnz = zdsz[1][0];
}
if (zdsz[2].Count > 0)
{
zdxz = zdsz[2][0];
}
if (zdsz[3].Count > 0)
{
zdbz = zdsz[3][0];
}
int col = zdfeat.Fields.FindField("新宗地东至");
zdfeat.set_Value(col, zddz);
col = zdfeat.Fields.FindField("新宗地南至");
zdfeat.set_Value(col, zdnz);
col = zdfeat.Fields.FindField("新宗地西至");
zdfeat.set_Value(col, zdxz);
col = zdfeat.Fields.FindField("新宗地北至");
zdfeat.set_Value(col, zdbz);
zdcs.UpdateFeature(zdfeat);
}
zdcs.Flush();
这时候报错,网上查了些资料,最后发现,使用updatefeature的时候,游标featurecursor不应该是由ifeaturelayer.Search得来的,这样无法来更新要素,因此只需要把 IFeatureCursor zdcs = zdlyr.Search(null, false);这一句改为
IFeatureCursor zdcs = zdlyr.FeatureClass.Update(null, false);就可以了。!!!
解决。