我编写了这段代码(使用Arcobjcts在C#.net中)从我的表中读取记录:
ITable table =featureWorkspace1.OpenTable(featureClass1.AliasName);
List<String> list2 = new List<String>();
ITableSelection tableSelection = table as ITableSelection;
ISelectionSet2 selectionSet = tableSelection.SelectionSet as ISelectionSet2;
ICursor Cursor = null;
IFeatureCursor featureCursor = Cursor as IFeatureCursor;
selectionSet.Search(null, true, out Cursor);
int fieldIndex = featureCursor.Fields.FindField(champ);
list2.Add(fieldIndex.ToString());
this.listBox2.DataSource = list2;
但是会发生错误:
未设置为对象实例的对象引用
我也试过了:
IQueryFilter queryFilter = new QueryFilterClass();
queryFilter.WhereClause = " champ <> '' ";
ICursor Cursor = table.Search(queryFilter,true);
IRow city = Cursor.NextRow();
while (city != null)
{
list2.Add((String)(city.Value[fieldIndex].ToString()));
city = Cursor.NextRow();
}
this.listBox2.DataSource = list2;
错误是:
HRESULT 0x80040358的异常
你能帮我解决一下这两个问题吗?
答案 0 :(得分:1)
检查city.Value[fieldIndex]
中的值并确保其为!= System.DBNull.Value
,然后再致电.ToString()
。
我还会验证您的字段索引是否正确以及您要查询champ
的字段是否拼写正确。