将编辑从 DataGridView 保存到 Datatable
Posted
技术标签:
【中文标题】将编辑从 DataGridView 保存到 Datatable【英文标题】:Save edits from DataGridView to Datatable 【发布时间】:2020-03-20 12:33:10 【问题描述】:您好,我想将 DataGriView 中的编辑保存到数据表,我尝试了该代码,但错误显示“System.ArgumentOutOfRangeException: '索引超出范围。它不能是负数,并且必须小于集合的大小。 参数名称:index ''帮助
private void button11_Click(object sender, EventArgs e)
con.Open();
String query = "SELECT * FROM Taom";
SqlDataAdapter SDA = new SqlDataAdapter(query, con);
DataTable dt1 = new DataTable();
DataSet ds1 = new DataSet();
DataTable dt = new DataTable();
dataGridView1.DataSource = dt1;
SDA.Fill(dt);
dataGridView1.Rows[2].Cells[2].Value = Math.Atan((Convert.ToDouble(dataGridView1.Rows[5].Cells[2].Value)) / (Convert.ToDouble(dataGridView1.Rows[6].Cells[2].Value)));
dataGridView1.Rows[3].Cells[2].Value = Math.Atan((Convert.ToDouble(dataGridView1.Rows[7].Cells[2].Value)) / (Convert.ToDouble(dataGridView1.Rows[8].Cells[2].Value)));
ds1.Tables.Add(dt);
con.Close();
我将我的代码更改为该代码,在我运行 datagridview 更改的值但数据表没有更改后没有显示错误!!!
string query = "SELECT * FROM [dbo].[Taom]";
SqlConnection conn = new SqlConnection(@"Data Source=STE-P0024818PW;Initial Catalog=test;Integrated Security=True");
conn.Open();
SqlDataAdapter SDA = new SqlDataAdapter(query, conn);
DataSet ds1 = new DataSet();
DataTable dt = new DataTable();
SDA.Fill(dt);
dt.Rows[0]["Contents"] = "98"; //Before it was 10
dt.Rows[1]["Contents"] = "99"; //Before it was 11
ds1.Tables.Add(dt);
conn.Close();
【问题讨论】:
@Digital3D 我用 dt 试过,但有一个错误说“DataRow 没有 Cells 的定义”!! 试试 dt.Rows[0][0] = "1"; dt.Rows[1][0] = "2"; 在真正的数据表中始终没有发生任何事情,只是 DataGridView 发生了变化! :'((我想我需要更新或类似的东西!! @Digital3D 不,我没有找到问题,您的解决方案对我没有帮助! :'(((我无能为力!! 但是我的例子可以在我的本地电脑上运行??没看懂,datatable里面的行更新了。 【参考方案1】:在表格中填写正确的值,然后将表格正确填写到数据源中,不要直接在 gridview 中更改,例如:
我自己试了一下,效果不错:
private void Run()
string query = "SELECT * FROM dbo.[Anrufthema]";
SqlConnection conn = new SqlConnection("MyConnectionString");
conn.Open();
SqlDataAdapter SDA = new SqlDataAdapter(query, conn);
DataSet ds1 = new DataSet();
DataTable dt = new DataTable();
SDA.Fill(dt);
dt.Rows[0]["Anrufthema"] = "98"; //Before it was 10
dt.Rows[1]["Anrufthema"] = "99"; //Before it was 11
ds1.Tables.Add(dt);
conn.Close();
我的结果,它有效!
【讨论】:
请问如何?我是新手!! 你能再看看我的答案吗:(!以上是关于将编辑从 DataGridView 保存到 Datatable的主要内容,如果未能解决你的问题,请参考以下文章
编辑后C#保存DataGridView(覆盖导入的Excel文件)
如何实现c# winform DataGridView添加一行,添加数据后,保存到数据库?