I inherited a .NET class extension that provides a form so our techs can add/modify features and/or attributes. I had to add several fields to an existing layer which have to go on the form as a combo box. These new fields get populated based on the values that get returned from an overlay function. The overlay function is returning the domain code value instead of the code, so its returning the value "Aqua Hedionda Tributary" instead of the code "AHT". When the next function tries to populate the field with "Aqua Hedionda Tributary" it gets ignored as if it doesn't recognize the value, even though the dropdown list is populated with all of the code values from the field's domain.
These functions already exist, I'm just adding additional fields and layers for overlay and to be populated via the form.
Can anyone tell me what the issue is?
- Why in the overlay function do some features return the code and some features return the value?
- Why can't I pass the domain value to populate the comboBox.selectedValue.
Here's the code....
This call the overlay function
obj.Value(obj.Fields.FindField(Globals.SoCalWetlandType)) = Globals.overlayFC(obj, overlaySoCalWetland, "WetType")
This is the overlay function
Public Function overlayFC(ByRef obj As IObject, ByRef layerName As String, ByRef fieldname As String) As String Dim pWorkspace As IWorkspace Dim pObjectClass As IObjectClass Dim pdataset As IDataset Dim pFC As IFeatureClass Dim pFeatCursor As IFeatureCursor Dim pFeat As IFeature Dim result As String = Nothing Dim i As Int32 = 0 pObjectClass = obj.Class pdataset = CType(pObjectClass, IDataset) pWorkspace = pdataset.Workspace pFC = OpenFC(pWorkspace, layerName) Dim pSP As ISpatialFilter pSP = New SpatialFilter pSP.Geometry = CType(obj.Value(obj.Fields.FindField("Shape")), IGeometry5) pSP.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects pSP.GeometryField = pFC.ShapeFieldName pFeatCursor = pFC.Search(pSP, True) pFeat = pFeatCursor.NextFeature() Do Until pFeat Is Nothing 'If i > 0 Then result = result + ", " result = result + pFeat.Value(pFeat.Fields.FindField(fieldname)).ToString 'i = i + 1 pFeat = pFeatCursor.NextFeature() Loop Return result Function
This is the form where the cbo boxes get populated with the domains and where the values from the overlay function get passed as the selected value.
Public Property frmTarget() As IObject 'This property is a reference to the feature being created or edited. When the feature is selected then 'this property gets updated by the parent class extension. When this happens the data entry fields are updated 'by this section Get Return _object End Get Set(ByVal value As ESRI.ArcGIS.Geodatabase.IObject) _object = value If Not _object Is Nothing Then If Not m_bCombosFilled Then '******************************** 'Dim RecName = "AHCT" 'Dim SoCalType = "FLUV" '*********************************************** '1.5.15 JPA - populated by overlay m_dctDomainValueHolder = Globals.getDomainArray(_object, Globals.SoCalWetlandType) m_bsSoCalWetlandType.DataSource = m_dctDomainValueHolder With cboSoCalWetlandType .DisplayMember = "Key" .ValueMember = "Value" .DataSource = m_bsSoCalWetlandType End With 'cboReceiveWaterBuffer.SelectedIndex = -1 'cboSoCalWetlandType.SelectedValue = SoCalType cboSoCalWetlandType.SelectedValue = _object.Value(_object.Fields.FindField(Globals.SoCalWetlandType)).ToString End if End If End Set End Property