将编辑从 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的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 datagridview 保存到 XML 并加载

从新表单将数据保存到数据库

编辑后C#保存DataGridView(覆盖导入的Excel文件)

如何实现c# winform DataGridView添加一行,添加数据后,保存到数据库?

怎么将datagridview中修改后的数据通过按钮点击直接保存到数据库啊?

如何使用从 datagridview 检索到的 ID 将数据保存到数据库?