Finding the value of a cell or a column within a row in a datagrid

I have a program that is a datagrid combobox in VB.Net, I would like to find or put in a textbox each time I go down to the datagrid the value of a cell or column (let's say column 2), how do I do that ?

This is how my program was written.  

Option Strict Off
Option Explicit On

Imports System
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Data
Imports System.Data.OleDb
Imports System.Resources
Imports System.Runtime.InteropServices
Imports System.Data.SqlClient

Namespace DataGridTextBoxCombo
    '/ <summary>
    '/ Summary description for Form1.
    '/ </summary>
    Public Class Form1
        Inherits System.Windows.Forms.Form

        Protected dsProducts As New DataSet
        Private dataGrid1 As System.Windows.Forms.DataGrid
        Private myDataSet As DataSet
        Private dataAdapter As OleDbDataAdapter

        Protected Const SQL_CONNECTION_STRING As String = _
        "Server=sql;" & _
        "DataBase=Management_Survey;" & _
        "Integrated Security=SSPI"

        Protected Const MSDE_CONNECTION_STRING As String = _
            "Server=(sqltest)\NetSDK;" & _
            "DataBase=Management_Survey;" & _
            "Integrated Security=SSPI"

        '/ <summary>
        '/ Required designer variable.
        '/ </summary>
        Protected Const PRODUCT_TABLE_NAME As String = "tblManager"
        Protected dvProducts As DataView

        Protected Const CAPTION_TITLE As String = "Bind Data to a ComboBox"
        Protected Const DEFAULT_SORT As String = "ManagerName ASC"
        ' Protected Const CAPTION_ICON_BUTTON As MsgBoxStyle = CType(MsgBoxStyle.Information + MsgBoxStyle.OKOnly, MsgBoxStyle)

        Private components As System.ComponentModel.Container = Nothing
        Public Sub New()
            ' Required for Windows Form Designer support

        End Sub 'New

        Private Sub MakeDataSetAndBindGrid()
            ' Set the connection and sql strings
            Dim connString As String = "Provider=sqloledb;Data Source = SQL; Initial Catalog = Management_Survey; Integrated Security = SSPI"
            Dim sqlString As String = "SELECT Description, ratingid FROM tblQuestion"

            dataAdapter = Nothing
            myDataSet = Nothing

                ' Connection object
                Dim connection As New OleDbConnection(connString)

                ' Create data adapter object
                dataAdapter = New OleDbDataAdapter(sqlString, connection)

                ' Create a dataset object and fill with data using data adapter's Fill method
                myDataSet = New DataSet
                dataAdapter.Fill(myDataSet, "tblQuestion")

                'now load the datatable for the bound combobox...
                'notice that the combobox & grid are NOT  bound to the same
                'table (if bound to the same table, you must have different binding contexts)
                sqlString = "SELECT ratingdesc, ratingid FROM tblRating order by ratingid"
                dataAdapter = New OleDbDataAdapter(sqlString, connection)
                dataAdapter.Fill(myDataSet, "tblrating")

                sqlString = "SELECT ManagerName, ManagerId FROM tblManager order by managerid"
                dataAdapter = New OleDbDataAdapter(sqlString, connection)
                dataAdapter.Fill(myDataSet, "tblManager")

            Catch ex As Exception
                MessageBox.Show(("Problem with access-   connection: " + connString + "            query: " + sqlString + ex.ToString()))
            End Try

            ' Create a table style that will hold the new column style
            ' that we set and also tie it to our customer's table from our DB
            Dim tableStyle As New DataGridTableStyle
            tableStyle.MappingName = "tblquestion"

            Dim dt As DataTable = myDataSet.Tables("tblquestion")

            ' make the dataGrid use our new tablestyle and bind it to our table
            Dim i As Integer

            While i < dt.Columns.Count
                If i <> 1 Then
                    Dim TextCol As New DataGridTextBoxColumn
                    TextCol.MappingName = dt.Columns(i).ColumnName
                    TextCol.HeaderText = dt.Columns(i).ColumnName
                    TextCol.Width = 450

                    Dim ComboTextCol As New DataGridComboBoxColumn
                    ComboTextCol.MappingName = "ratingId" 'must be from the grid table...
                    ComboTextCol.HeaderText = "Rating"
                    ComboTextCol.Width = 120
                    'DataView dv = new DataView(myDataSet.Tables["customerList"], "", "customerID", DataViewRowState.CurrentRows);
                    ComboTextCol.ColumnComboBox.DataSource = myDataSet.Tables("tblrating").DefaultView 'dv;
                    ComboTextCol.ColumnComboBox.DisplayMember = "ratingdesc"
                    ComboTextCol.ColumnComboBox.ValueMember = "ratingID"

                    tableStyle.PreferredRowHeight = ComboTextCol.ColumnComboBox.Height + 2


                End If

                i = i + 1

            End While

            dataGrid1.DataSource = dt

            'make it no append
            myDataSet.Tables("tblquestion").DefaultView.AllowDelete = False
            myDataSet.Tables("tblquestion").DefaultView.AllowNew = False
            myDataSet.Tables("tblquestion").DefaultView.AllowEdit = False

        End Sub 'MakeDataSetAndBindGrid

        '/ <summary>
        '/ Clean up any resources being used.
        '/ </summary>
        Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
            If disposing Then
                If Not (components Is Nothing) Then
                End If
            End If
        End Sub 'Dispose
        Friend WithEvents Label1 As System.Windows.Forms.Label
        Friend WithEvents cboRightCombo As System.Windows.Forms.ComboBox
        Friend WithEvents Button1 As System.Windows.Forms.Button
        Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
        Friend WithEvents Button2 As System.Windows.Forms.Button
        Private Sub InitializeComponent()
            Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
            Me.dataGrid1 = New System.Windows.Forms.DataGrid
            Me.Label1 = New System.Windows.Forms.Label
            Me.cboRightCombo = New System.Windows.Forms.ComboBox
            Me.Button1 = New System.Windows.Forms.Button
            Me.TextBox1 = New System.Windows.Forms.TextBox
            Me.Button2 = New System.Windows.Forms.Button
            CType(Me.dataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
            Me.dataGrid1.AlternatingBackColor = System.Drawing.Color.Gainsboro
            Me.dataGrid1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                        Or System.Windows.Forms.AnchorStyles.Left) _
                        Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
            Me.dataGrid1.BackColor = System.Drawing.Color.Silver
            Me.dataGrid1.BackgroundColor = System.Drawing.Color.Lavender
            Me.dataGrid1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
            Me.dataGrid1.CaptionBackColor = System.Drawing.Color.DarkSlateBlue
            Me.dataGrid1.CaptionFont = New System.Drawing.Font("Tahoma", 8.0!)
            Me.dataGrid1.CaptionForeColor = System.Drawing.Color.White
            Me.dataGrid1.CaptionText = "Rate your Manager/Supervisor"
            Me.dataGrid1.DataMember = ""
            Me.dataGrid1.FlatMode = True
            Me.dataGrid1.ForeColor = System.Drawing.Color.Black
            Me.dataGrid1.GridLineColor = System.Drawing.Color.White
            Me.dataGrid1.HeaderBackColor = System.Drawing.Color.DarkGray
            Me.dataGrid1.HeaderForeColor = System.Drawing.Color.Black
            Me.dataGrid1.LinkColor = System.Drawing.Color.DarkSlateBlue
            Me.dataGrid1.Location = New System.Drawing.Point(16, 40)
            Me.dataGrid1.Name = "dataGrid1"
            Me.dataGrid1.ParentRowsBackColor = System.Drawing.Color.Black
            Me.dataGrid1.ParentRowsForeColor = System.Drawing.Color.White
            Me.dataGrid1.SelectionBackColor = System.Drawing.Color.DarkSlateBlue
            Me.dataGrid1.SelectionForeColor = System.Drawing.Color.White
            Me.dataGrid1.Size = New System.Drawing.Size(688, 536)
            Me.dataGrid1.TabIndex = 0
            Me.Label1.Location = New System.Drawing.Point(176, 88)
            Me.Label1.Name = "Label1"
            Me.Label1.Size = New System.Drawing.Size(112, 16)
            Me.Label1.TabIndex = 1
            Me.cboRightCombo.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
            Me.cboRightCombo.Location = New System.Drawing.Point(16, 8)
            Me.cboRightCombo.Name = "cboRightCombo"
            Me.cboRightCombo.Size = New System.Drawing.Size(222, 24)
            Me.cboRightCombo.TabIndex = 2
            Me.Button1.Location = New System.Drawing.Point(256, 8)
            Me.Button1.Name = "Button1"
            Me.Button1.Size = New System.Drawing.Size(120, 23)
            Me.Button1.TabIndex = 3
            Me.Button1.Text = "Load Manager's List"
            Me.TextBox1.Location = New System.Drawing.Point(456, 8)
            Me.TextBox1.Name = "TextBox1"
            Me.TextBox1.TabIndex = 4
            Me.TextBox1.Text = ""
            Me.Button2.Location = New System.Drawing.Point(592, 8)
            Me.Button2.Name = "Button2"
            Me.Button2.TabIndex = 5
            Me.Button2.Text = "Button2"
            Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
            Me.ClientSize = New System.Drawing.Size(712, 597)
            Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
            Me.Name = "Form1"
            Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
            Me.Text = "Fabcon Management Survey"
            CType(Me.dataGrid1, System.ComponentModel.ISupportInitialize).EndInit()

        End Sub 'InitializeComponent

        <STAThread()> _
          Public Shared Sub Main()
            Application.Run(New Form1)

        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        End Sub
        Private Sub BindToDataSet()
                cboRightCombo.DataSource = dvProducts
                cboRightCombo.DisplayMember = "ManagerName"
                cboRightCombo.ValueMember = "ManagerID"

            Catch exp As Exception
                MessageBox.Show(exp.Message, Me.Text)
            End Try
        End Sub
        Private Sub LoadData()
            Dim strConnection As String = SQL_CONNECTION_STRING

            Dim IsConnecting As Boolean = True
            While IsConnecting


                    Dim northwindConnection As New SqlConnection(strConnection)

                    Dim ProductAdapter As New SqlDataAdapter( _
                        "SELECT * " _
                        & "FROM tblManager", _

                    ProductAdapter.Fill(dsProducts, PRODUCT_TABLE_NAME)

                    'create the dataview; use a constructor to specify
                    ' the sort, filter criteria for performance purposes
                    dvProducts = New DataView(dsProducts.Tables("tblManager"), "", DEFAULT_SORT, DataViewRowState.OriginalRows)

                    ' Data has been retrieved successfully  
                    ' Signal to break out of the loop by setting isConnecting to false.
                    IsConnecting = False

                    'Handle the situation where a connection attempt has failed
                Catch exc As Exception
                    If strConnection = SQL_CONNECTION_STRING Then
                        ' Couldn't connect to SQL Server.  Now try MSDE.
                        strConnection = MSDE_CONNECTION_STRING

                        ' Unable to connect to SQL Server or MSDE

                    End If
                End Try
            End While

        End Sub


    End Class 'Form1
End Namespace 'DataGridTextBoxCombo
Who is Participating?
Have a look at this link:

Your Question is not clear
What do you want to do locate the cell where user wants to enter values???
If yes then use .CurrentCell

If you mean to say that you would like to show a textbox in the current cell so that user can edit, I think the DataGrid does it automatically for you..
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.