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?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
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
Then you can use the dgvCombo from the example I have showed you above!
Yes, jpaulino's solution should work just fine.
ASKER
Thank You.
Just for clarification, are you looking to pass the "Value" of the combo box to a function?
Regards,
Keith