Cannot bind to the new display member. Parameter name: newDisplayMember

BlakeMcKenna
BlakeMcKenna used Ask the Experts™
on
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

Open in new window

Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Most Valuable Expert 2012
Top Expert 2014

Commented:
Try changing following

cmbDirection.DisplayMember = EH.DataSet.Tables(0).Columns(1).ColumnName
cmbDirection.ValueMember = EH.DataSet.Tables(0).Columns(0).ColumnName

to

Dim dispMember  As String = EH.DataSet.Tables(0).Columns(1).ColumnName
Dim valMember As String = EH.DataSet.Tables(0).Columns(0).ColumnName
cmbDirection.DisplayMember = dispMember
cmbDirection.ValueMember = valMember

Author

Commented:
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...
Most Valuable Expert 2012
Top Expert 2014
Commented:
Yes that would have been my next option. On random occasions, this fixes the issue especially when reassigning/repopulating the combobox.

Author

Commented:
Thanks for your help!

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial