Link to home
Start Free TrialLog in
Avatar of KentDBerry
KentDBerry

asked on

How to pass Datagridview Combobox cell as a parameter to a function

I have a datagridview that contains many combobox that will be bound to different sources.  I want to pass the combobox object of a cell in the datagrid to a function as a parameter.  What is the syntax to do so?
Avatar of kdwood
kdwood

Kent,

Just for clarification, are you looking to pass the "Value" of the combo box to a function?

Regards,

Keith
ASKER CERTIFIED SOLUTION
Avatar of Jorge Paulino
Jorge Paulino
Flag of Portugal image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of KentDBerry

ASKER

No.  I want to pass the object.   I have an existing function that I use to populate combo boxes in general and I am trying to tap into it as shown below.
            For Each row As DataGridViewRow In .Rows
                For i As Integer = 1 To 10
                    Bind_Object_To_DataSource(<reference combobox object here>, .Item("AnswerTypeID", row.Index).Value, IIf(.Item(Trim(Str(i)), row.Index).Value Is DBNull.Value, 0, .Item(Trim(Str(i)), row.Index)))
                    '                    Bind_Object_To_DataSource(.Item(i, row.Index), .Item("AnswerTypeID", row.Index).Value, .Item("A" & Trim(Str(i)) & "_AnswerID", row.Index).Value)
                Next
            Next
 
 
    Public Sub Bind_Object_To_DataSource(ByVal cb As Object, ByVal AnswerTypeID As Integer, ByVal AnswerID As Integer)
        Dim conn As New SqlConnection(My.Settings.ConnectionString)
        Dim sql As String = ""
        Try
            Dim sYear As String = ""
            If cb.Name <> "cbYear" Then
                If Me.cbYear.Text = "" Then
                    sYear = Year(Now()).ToString 'Trim(Me.cbYear.SelectedValue.ToString)
                    Me.cbYear.SelectedText = sYear
                Else
                    Try
                        sYear = Trim(Me.cbYear.SelectedValue.ToString)
                    Catch ex As Exception
                        sYear = ""
                    End Try
                End If
 
            End If
 
            Select Case cb.Name
                Case "cbYear"
                    sql = "SELECT YR as Code, rtrim(str(YR)) as Description FROM BRDWorkslates.dbo.tblEFF_NAFTA_WORKSLATE_REPORT GROUP BY YR HAVING (YR is not Null) and (YR >= 2008) and (YR < 2090) Order by YR DESC"
                Case "cbScientist"
                    sql = "SELECT Researcher as Code, Researcher as Description FROM BRDWorkslates.dbo.tblEFF_NAFTA_WORKSLATE_REPORT Where YR = '" & sYear & "' GROUP BY Researcher HAVING Researcher is not null Order by Researcher ASC"
                Case "cbTrialNumber"
                    sql = "SELECT Trial_NO as Code, Trial_NO as Description FROM BRDWorkslates.dbo.tblEFF_NAFTA_WORKSLATE_REPORT Where YR = '" & sYear & "' and Researcher = '" & Trim(Me.cbScientist.SelectedValue) & "' GROUP BY Trial_NO HAVING Trial_NO is not null Order by Trial_NO ASC"
                Case Else ' combo boxes for data entry
                    sql = "Select AnswerID as Code, Option as Description FROM tblAnswerTypesAndOptions where AnswerTypeID = " & Str(AnswerTypeID)
            End Select
 
            Dim DA As New SqlDataAdapter(sql, conn)
            Dim DS As New DataSet
            DA.Fill(DS, "Codes")
 
            Dim dt As New DataTable
            dt.Columns.Add("Description", GetType(System.String))
            dt.Columns.Add("Code", GetType(System.String))
 
            Dim drDSRow As DataRow
            Dim drNewRow As DataRow
 
            For Each drDSRow In DS.Tables("Codes").Rows
                drNewRow = dt.NewRow
                drNewRow("Description") = drDSRow("Description")
                drNewRow("Code") = drDSRow("Code")
                dt.Rows.Add(drNewRow)
            Next
 
 
            With cb
                .DataSource = dt
                .DisplayMember = "Description"
                .ValueMember = "Code"
 
                .AutoCompleteMode = AutoCompleteMode.Suggest
                .AutoCompleteSource = AutoCompleteSource.ListItems
                .DropDownStyle = ComboBoxStyle.DropDown
                '                .DataBindings.Add(New Binding("SelectedValue", dt, "Code"))
 
                Select Case cb.Name
                    Case "cbYear"
                        cb.SelectedValue = My.Settings.Year
                    Case "cbScientist"
                        cb.SelectedValue = My.Settings.Scientist
                    Case "cbTrialNumber"
                        cb.SelectedValue = My.Settings.TrialNumber
                    Case Else
                        cb.SelectedValue = AnswerID
 
                End Select
            End With
        Catch ex As Exception
 
            MsgBox(ex.Message)
        End Try
    End Sub

Open in new window

Then you can use the dgvCombo from the example I have showed you above!
Yes, jpaulino's solution should work just fine.
Thank You.