使用C#循环遍历gridview的所有行和列

时间:2010-01-07 19:51:25

标签: c# gridview for-loop

我有一个包含10行和3列的网格视图。现在我想循环遍历gridview的所有行和所有列,并希望将它们添加到数据表中。

  DataRow row;
  int rowscount = gv.Rows.Count;
    int columnscount = gv.Columns.Count;
    for (int i = 0; i < rowscount; i++)
    {
        for (int j = 0; j < columnscount; j++)
        {
            row = empTable.NewRow();
            row["a"] = gv.Rows[i][column1].Tostring();
            row["b"] = gv.Rows[i][column2].ToString();
            MynewDatatable.Rows.Add(row);
        }
    }    

gv - 我的gridview

现在我的问题是,我可以将gv中所有行的所有列的值都获取到我的新数据表中。我不知道我的循环是否正确...我正在使用此数据表批量复制功能......

4 个答案:

答案 0 :(得分:5)

  • 上面的代码是为GridView中的每个单元格创建一个新行。
  • 在GridView的每一行中,您的代码将行中的每个值分配给同一列Emp_Name。

更正,我认为:

int rowscount = gv.Rows.Count;
int columnscount = gv.Columns.Count;
for (int i = 0; i < rowscount; i++)
{
    // Create the row outside the inner loop, only want a new table row for each GridView row
    DataRow row = empTable.NewRow();
    for (int j = 1; j < columnscount; j++)
    {
        // Referencing the column in the new row by number, starting from 0.
        row[j - 1] = gv.Rows[i][j].Tostring();
    }
    MynewDatatable.Rows.Add(row);
}
编辑:您一直在编辑问题的来源,所以我的答案可能会变得过时。 :)

答案 1 :(得分:0)

您的循环不正确,所有列表都从0开始。但是在循环遍历列时从1开始。

答案 2 :(得分:0)

JMD答案是正确的,但根据您的用例,可能将网格视图的DataSource数据绑定到DataTable是一种更好的方法。

答案 3 :(得分:0)

试试这段代码:

        foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {
            string selectedempid = dataGridView1.SelectedRows[0].Cells["Deptno"].Value.ToString();
            {
                SqlCommand cmd = new SqlCommand("delete from Test_dept where Deptno=" + selectedempid, con);
                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
                MessageBox.Show("deleted");

            }
        }