Please use CODE tags!Firts of all:while (row != null) { feature = featureClass.GetFeature(row.OID); //Adds the selected object ID's to the drop down menus middlePole.Items.Add(feature.get_Value(featureClass.FindField("OBJECTID")).ToString()); leftPole.Items.Add(feature.get_Value(featureClass.FindField("OBJECTID")).ToString()); rightPole.Items.Add(feature.get_Value(featureClass.FindField("OBJECTID")).ToString()); //textBox3.Text = feature.get_Value(featureClass.FindField("LASTUPDATESESSIONID")).ToString(); //Goes to the NextRow so that the while loop can catch if the next row is a Null. row = cursor.NextRow(); }
Isn't it simpler this way:{ while(row != null) { string objectID = GetStringValueFromField(row, "OBJECTID"); middlePole.Items.Add(objectID); leftPole.Items.Add(objectID); rightPole.Items.Add(objectID); row = cursor.NextRow(); } } private string GetStringValueFromField(IRow row, string fieldName) { int index = row.Fields.FindField(fieldName); string fieldValue; if (index > -1) { fieldValue = row.get_Value(index).ToString(); return fieldValue; } else return fieldValue = ""; }
By the way you don't have to get feature to get value from field(as you can see in GetStringValueFromField method).To relate to topic of your thread. Enumerate through the layers in the TOC, example:IUID uid = new UIDClass(); uid.Value = "{40A9E885-5533-11D0-98BE-00805F7CED21}"; IEnumLayer enumLayer = map.get_Layers((UID)uid, true); enumLayer.Reset(); IFeatureLayer featLayer = (IFeatureLayer)enumLayer.Next(); while(featLayer != null) { //your logic, for example IFeatureSelection featureSelection = (IFeatureSelection)featLayer; ICursor cursor; selectionSet.Search(null, false, out cursor); IRow row = cursor.NextRow(); ...etc ////////////// featLayer = (IFeatureLayer)enumLayer.Next(); }
CheersMDruzgala