强制从筛选的数据网格视图更新到数据库

本文关键字:视图 网格 更新 数据库 数据网 数据 筛选 | 更新日期: 2023-09-27 17:56:41

我创建了一个应用程序来修复从机器传输数据时的日期转换问题。转换效果很好。我创建了一个包含所有记录的数据网格视图。然后,我对 DataGridView 进行排序,以使用 SqlDataAdapter 和 DataSet 显示需要更新的数据。然后,我对 DataGridView 中的数据进行更改,然后单击保存按钮以将更改应用于数据库表。

     try
        {
            MessageBox.Show("Complete");
            this.log5DataGridView.EndEdit();
            //this.log5BindingSource.DataSource = this.log5DataGridView.DataSource; <-- Last Resort
            this.log5BindingSource.ResetBindings(false);
            this.log5BindingSource.EndEdit();
            this.log5TableAdapter.Update(roboticlineDataSet.Log5);
        }
        catch { }

当我在调试模式下运行时,log5DataGridView.DataSource Table[] 显示数据更改可用。但是log5BindingSource似乎从未得到将其推送到TableAdapter Update的更改。我尝试了ResetBindings,EndEdit()最后一件事是获取数据源并将其强制到BindingSource。

如果我使用以下代码搜索精确的记录,则不会保存/更新到数据库。

 using (SqlDataAdapter adpt = new SqlDataAdapter("SELECT * FROM [dbo].[RoboticLine] WHERE [FSItemNumber] = '" + Value + "' ORDER BY [FSItemNumber] ASC;", conn))
                        {
                            DataSet ds = new DataSet();
                            adpt.Fill(ds);
                            valueComboBox.Enabled = false;
                            log5DataGridView.DataSource = ds.Tables[0];
                            log5DataGridView.Refresh();
                            this.log5DataGridView.Rows[0].Selected = true;
                        }//end of adpt using

问题是是否有办法将搜索的log5DataGridView记录保存回数据库,因为datagridview表保留更改,但log5BindingSource仍然包含原始的

this.log5TableAdapter.Fill(this.roboticlineDataSet.Log5);

谢谢。

强制从筛选的数据网格视图更新到数据库

找出发生了什么,当我对数据网格视图进行编程以显示搜索的数据时,它没有更改绑定源,而是从表单加载()中保持相同。

this.log5TableAdapter.Fill(this.roboticlineDataSet.Log5);

为了解决这个问题,我在Soultion Explorer的Dataset.xsd位置找到了RoboticLineTable。在这里,我选择了roboticlinetable适配器,并在选择Add->Query的位置右键单击。在这里,我创建了一个 SQL 查询,其中 ID = @Value 来执行所需的过滤/搜索。这会将使用此代码替换使用 SqlDataAdapter 代码

this.log5DataGridView.EndEdit();
this.log5BindingSource.EndEdit();    
this.log5tableAdapter.FillByID(this.roboticline.Log5, Value);
this.invalidate();
this.log5DatagridView.Refresh();

现在,当我希望保存时,绑定源具有在数据网格视图中所做的更改,并更新/保存到数据库。创建和重新填充表适配器有助于为您保留指向绑定源的链接。

希望这对将来可能遇到这种情况的其他人有所帮助