Solved

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

Posted on 2009-04-06
6
757 Views
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?
0
Comment
Question by:KentDBerry
  • 2
  • 2
  • 2
6 Comments
 
LVL 10

Expert Comment

by:kdwood
Comment Utility
Kent,

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

Regards,

Keith
0
 
LVL 48

Accepted Solution

by:
jpaulino earned 500 total points
Comment Utility
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

0
 

Author Comment

by:KentDBerry
Comment Utility
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

0
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 
LVL 48

Expert Comment

by:jpaulino
Comment Utility
Then you can use the dgvCombo from the example I have showed you above!
0
 
LVL 10

Expert Comment

by:kdwood
Comment Utility
Yes, jpaulino's solution should work just fine.
0
 

Author Closing Comment

by:KentDBerry
Comment Utility
Thank You.
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

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 …
I think the Typed DataTable and Typed DataSet are very good options when working with data, but I don't like auto-generated code. First, I create an Abstract Class for my DataTables Common Code.  This class Inherits from DataTable. Also, it can …
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

763 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now