BlakeMcKenna
asked on
Cannot bind to the new display member. Parameter name: newDisplayMember
I'm getting the above error while trying to load a ComboBox. It only occurs on the second execution of the LoadDirectionComboBox() Function. What does this mean? Below is the process of execution.
'This Sub is executed from a Form Class
Public Sub LoadDirectionComboBox()
Try
InitializeErrorClass(EH)
BL.LoadDirectionComboBox(EH)
If EH.DataSet.Tables(0).Rows.Count > 0 Then
cmbDirection.DataSource = Nothing
cmbDirection.DataSource = EH.DataSet.Tables(0)
cmbDirection.DisplayMember = EH.DataSet.Tables(0).Columns(1).ColumnName
cmbDirection.ValueMember = EH.DataSet.Tables(0).Columns(0).ColumnName
End If
Catch ex As Exception
EH.ErrorMessage = "LoadDirectionComboBox() - " & ex.Message & "~E"
End Try
EH.ProcessMessages(Me, sbr, EH.ErrorMessage)
End Sub
'
'
'This Function initializes an Error Handling Class Objects and is in a Module File
Public Function InitializeErrorClass(ByRef EH As ErrorHandling.ErrorHandler)
Try
EH.DataSet = New DataSet
EH.DataTable = New DataTable
EH.Exception = Nothing
EH.ErrorMessage = ""
EH.Character = ""
EH.Bool = False
EH.Number = 0
Catch ex As Exception
EH.ErrorMessage = "InitializeErrorClass() - " & ex.Message & "~E"
End Try
Return EH
End Function
'
'
'This Function resides in my Business Layer
Public Function LoadDirectionComboBox(ByRef EH As ErrorHandling.ErrorHandler)
Try
Dim strFields As String = "direction_ID,direction"
Dim strTableID As String = "LKUP_Directions"
Dim strCriteria As String = "active <> 0"
Dim strOrderBy As String = ""
DL.GetData(strTableID, strFields, strCriteria, strOrderBy, EH)
Catch ex As Exception
EH.ErrorMessage = "LoadDirectionComboBox() - " & ex.Message & "~E"
End Try
Return EH
End Function
'
'
'This Function resides in my Data Layer
Public Function GetData(ByVal tbl As String, ByVal keyFld As String, ByVal criteria As String, ByVal orderBy As String, ByRef EH As ErrorHandling.ErrorHandler)
Try
Dim strCriteria As String = ""
Dim strOrderBy As String = ""
DBConnection(EH)
If EH.Bool Then
sSQL = "SELECT " & keyFld & " FROM " & tbl
If criteria.Length > 0 Then
strCriteria = " WHERE " & criteria
sSQL &= strCriteria
End If
If orderBy.Length > 0 Then
strOrderBy = " ORDER BY " & orderBy
sSQL &= strOrderBy
End If
cmd = New SqlCommand(sSQL, cnn)
adp = New SqlDataAdapter
adp.SelectCommand = cmd
adp.Fill(EH.DataSet, 0)
'adp.Fill(EH.DataSet, "Temp")
End If
Catch ex As Exception
EH.ErrorMessage = "GetData() - " & ex.Message & "...Contact Engineering!" & "~E"
Finally
cnn.Dispose()
End Try
Return EH
End Function
'
'
'This Function resides in my Data Layer
Public Function DBConnection(ByRef EH As ErrorHandling.ErrorHandler)
Try
frm.Name = "frmMain"
cnn = New SqlConnection
EH.Bool = False
With cnn
.ConnectionString = strCNN
.Open()
EH.Bool = True
End With
Catch ex As Exception
EH.ErrorMessage = "DBConnection() - " & ex.Message & "...Contact Engineering!" & "~E"
End Try
Return EH
End Function
ASKER
I actually got it working. I moved the DataSource assignment statement beneath the DisplayMember/ValueMember statements and that seemed to work. Not sure why though...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks for your help!
cmbDirection.DisplayMember
cmbDirection.ValueMember = EH.DataSet.Tables(0).Colum
to
Dim dispMember As String = EH.DataSet.Tables(0).Colum
Dim valMember As String = EH.DataSet.Tables(0).Colum
cmbDirection.DisplayMember
cmbDirection.ValueMember = valMember