In my current application I have a snippet of code that allows me to select a single row in a data grid view and store all the columns information into a variable to do with what I want. I use this primarily to send information from one SQL database table to another. It's great for only sending specified cells within a row.
Here is how I do a single row:
string ID = dataGridView1.SelectedRows[0].Cells[0].Value + string.Empty;
            string itemOne= dataGridView1.SelectedRows[0].Cells[1].Value + string.Empty;
            string itemTwo= dataGridView1.SelectedRows[0].Cells[2].Value + string.Empty;
            string itemThree= dataGridView1.SelectedRows[0].Cells[3].Value + string.Empty;
            var vItemOne = itemOne;
            var vItemTwo= itemTwo;
            var vItemThree= itemThree;
            // ETC..
However, I now want to be able to select Multiple Rows and only insert specified columns within those rows to a SQL database.
I've tried modifying the above code to work... obviously it doesn't work.
I believe I need a loop, I haven't really used loops much so I'm not sure how to make it loop, skip certain columns, then insert into database.
This is what I am currently attempting, however I seem to be messing up somewhere.
using (SqlConnection con = new SqlConnection(Connection.MTRDataBaseConn))
            {
            for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
            {
                con.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = "INSERT INTO dbo.[" + txtJobName.Text + "] ([Item One], [Item Two], [Item Three]) VALUES(@ItemOne,@ItemTwo,@ItemThree)";
                cmd.Connection = con;
                string strItemOne = this.dataGridView1.SelectedRows[i].Cells[1].Value + string.Empty;
                string strItemTwo = this.dataGridView1.SelectedRows[i].Cells[2].Value + string.Empty;
                string strItemThree = this.dataGridView1.SelectedRows[i].Cells[3].Value + string.Empty;
                //Parameters
                cmd.Parameters.AddWithValue("@ItemOne", strItemOne);
                cmd.Parameters.AddWithValue("@ItemTwo", strItemTwo);
                cmd.Parameters.AddWithValue("@ItemThree", strItemThree);
                //execute
                cmd.ExecuteNonQuery();
                //close connection
                con.Close();
            }
        }
...
While Debugging My dataGridView.SelectedRows.Count; i++ doesn't seem to be increasing and is staying at 0... I'm receiving the error when I try to return the selected row to a string. Shouldn't my selected rows still return a value? 
I'm under the assumption my loop is wrong.
Can anyone help me with my issue?
 
    