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

Posted on 2009-04-06
Last Modified: 2012-05-06
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?
Question by:KentDBerry
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
  • 2
LVL 10

Expert Comment

ID: 24078887

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


LVL 48

Accepted Solution

jpaulino earned 500 total points
ID: 24078927
If you have a datasource for that comboboxes you can use that.
Maybe you can use a DataView for that ...

Dim dgvCombo As DataGridViewComboBoxCell = DirectCast(Me.DataGridView1(<Column Name or Index>, <Row Number>), DataGridViewComboBoxCell) 
Dim dv As DataView = DirectCast(dgvCombo.DataSource, DataView) 

Open in new window


Author Comment

ID: 24078963
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)
    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 = ""
            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
                        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")
            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
        End Try
    End Sub

Open in new window

Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

LVL 48

Expert Comment

ID: 24079002
Then you can use the dgvCombo from the example I have showed you above!
LVL 10

Expert Comment

ID: 24079023
Yes, jpaulino's solution should work just fine.

Author Closing Comment

ID: 31567103
Thank You.

Featured Post

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Well, all of us have seen the multiple EXCEL.EXE's in task manager that won't die even if you call the .close, .dispose methods. Try this method to kill any excels in memory. You can copy the kill function to create a check function and replace the …
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.

696 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question