Get value of ID Column in dataGridView ForEach?

I have some code that I would like to execute for each row in a dataGridView that I am populating from a database.  Does anyone know how I can get the value of the ID Column for each row for this foreach?  Any help is greatly appreciated.

Here is my code if you need it:

(You may notice that the Select Statement and columns in the dataGridView don't add up...  I accidentally deleted part of the Select Statement, so I'll be fixing that today...  In the meantime what is there is correct...

Thanks Again,
//Populate the Collection DataGridView
string conString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Environment.CurrentDirectory + @"\DB.accdb;Jet OLEDB:Database Password=xxxx;";
// create an open the connection
OleDbConnection conn = new OleDbConnection(conString);
OleDbCommand command = new OleDbCommand();
command = conn.CreateCommand();
// create the DataSet
DataSet ds = new DataSet();
// run the query
command.CommandText = "SELECT ID AS [#], CTitle AS [Title], CType AS [Type], CValue AS [Value] FROM Table1 WHERE Tab = 'Tab1';";
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter = new OleDbDataAdapter(command);
// close the connection
bindingSource.DataSource = ds.Tables[0];
dataGridView1.DataSource = bindingSource;
//Set Value Column Format to Currency
dataGridView1.Columns["Value"].DefaultCellStyle.Format = "c";
//Count the number of rows
int CountString;
CountString = bindingSource.Count;
Label1.Text = CountString + "";
//Total the value of results
String valueString = ds.Tables[0].Compute("Sum(Value)", String.Empty).ToString();
decimal valueString2 = Convert.ToDecimal(valueString);
String valueString3 = String.Format("{0:C}", valueString2);
if (valueString != "")
Label2.Text = valueString3;
// set the size of the dataGridView Columns
this.dataGridView1.Columns[0].Width = 50;
this.dataGridView1.Columns[1].Visible = false;
this.dataGridView1.Columns[2].Width = 311;
this.dataGridView1.Columns[3].Width = 50;
this.dataGridView1.Columns[4].Width = 50;
this.dataGridView1.Columns[5].Width = 100;
this.dataGridView1.Columns[6].Width = 100;
this.dataGridView1.Columns[7].Width = 100;
this.dataGridView1.Columns[8].Width = 100;
this.dataGridView1.Columns[9].Width = 100;
//Sort on the Title Column
DataGridViewColumn sortColumn = dataGridView1.Columns[2];
ListSortDirection direction;
direction = ListSortDirection.Ascending;
dataGridView1.Sort(sortColumn, direction);
//Set the Selected Property of the First Row to False
dataGridView1.Rows[0].Selected = false;
//Clear selection in dataGridView
dataGridView1.CurrentCell = null;

Open in new window

Who is Participating?
anarki_jimbelConnect With a Mentor Commented:
Not 100% sure what do you need. Do you need to get a value for row's column if column name, say, is "ID"? Or, in other words, you have a row, and want to get "ID" value from it but does not know what's the column number? Do I understand properly?

If yes, you probably need two nested loops. I have written some sample code, but it's in VB, hope you can understand (it's very straightforward. In button_Click1 we iterate through rows, and through cells in each row, and if cell's owning column is "ID" - we print content.

In Form_Load I just populate the grid.

If you can'r read vb6 code let me know.
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For Each r As DataGridViewRow In Me.dgv.Rows
            For i As Integer = 0 To r.Cells.Count - 1
                If r.Cells.Item(i).OwningColumn.Name = "ID" Then
                    Debug.WriteLine("ID = " & r.Cells.Item(i).Value)
                End If
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' create datatable
        Dim dt As New DataTable
        ' create 3 datacolumns
        Dim dc0 As New DataColumn("ID")
        Dim dc1 As New DataColumn("Name")
        Dim dc2 As New DataColumn("Rank")
        ' add columns to datatable
        ' create, fill datarows and add them to table
        Dim dr0 As DataRow = dt.NewRow
        dr0.Item(0) = "22"
        dr0.Item(1) = "Bob"
        dr0.Item(2) = "H"
        Dim dr1 As DataRow = dt.NewRow
        dr1.Item(0) = "44"
        dr1.Item(1) = "Rod"
        dr1.Item(2) = "L"
        Dim dr2 As DataRow = dt.NewRow
        dr2.Item(0) = "66"
        dr2.Item(1) = "Ken"
        dr2.Item(2) = "M"
        ' set table as datasourse for datagridview
        Me.dgv.DataSource = dt
    End Sub

Open in new window

M_LyonsAuthor Commented:
Thank you very much, that did work well.  I used a VB to C# converter online.  I love those things...  lol  Thanks Again.
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.