我有一个包含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
中所有行的所有列的值都获取到我的新数据表中。我不知道我的循环是否正确...我正在使用此数据表批量复制功能......
答案 0 :(得分:5)
更正,我认为:
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");
}
}