【发布时间】:2021-04-15 00:27:27
【问题描述】:
我已经使用设计器将我的 MSSQL 数据表绑定到 datagridview(数据表至少有 30 列),它会像这样填充数据:
this.produktaiTableAdapter.Fill(this.veiklosDuomenysDataSet.Produktai);
this.produktaiBindingSource.Filter = advancedDataGridView1.Columns[1].HeaderText + " = " + Veiklos_ID;
我有必要像这样绑定它,因为我有很多关于 DGV 中每一列的代码(例如,宽度、货币等)。
现在我想通过单击“保存”按钮将 datatagridview 中所有新的、更新的和删除的数据保存到我的 MSSQL 数据表中。我怎样才能做到这一点?如何将我编辑的 datagridview 转换为数据表?
我也在我的保存按钮单击时尝试了此代码:
this.Validate();
this.produktaiBindingSource.EndEdit();
this.produktaiTableAdapter.Update(this.veiklosDuomenysDataSet.Produktai);
而且.. 它不起作用。我对 datagridview 和 datatables 总体上是相当新的,因为我认为这个问题应该很容易解决。
编辑:
另外,这条线有什么帮助吗?
DataTable Produktai = advancedDataGridView1.DataSource as DataTable;
EDIT2: 这也不起作用。
veiklosDuomenysDataSet.Naudotojai.AcceptChanges();
this.Validate();
this.produktaiBindingSource.EndEdit();
this.produktaiTableAdapter.Update(this.veiklosDuomenysDataSet.Produktai);
MessageBox.Show("Data is saved!");
EDIT3:
这是我的主窗体的调试图:Here
如您所见,我没有文本框或按钮,如 INSERT、DELETE 和 UPDATE。用户只需单击单元格并编辑值即可编辑 DGV,只需按 ENTER 即可添加新行,通过单击同一选定行上的删除(图片中的 Ištrinti)删除该行(注意:删除按钮列是唯一的DGV 中的未绑定列)。
我使用 MSSQL 数据表将其与 datagridview 绑定,并且我希望 datagridview 中的所有新行、删除或编辑的行在数据表中更新/更新,它也由保存按钮绑定。
也许这个信息应该有一些不同的东西,一个疯狂的猜测?
【问题讨论】:
-
定义“它不起作用”。顺便说一句,您已将整个数据库表下载到客户端,然后在其上运行过滤器。这几乎肯定比更改(或添加)tableadapter 查询以减少下载数据更糟糕
-
不,您编辑的行对 tableadapter 保存修改行的能力没有帮助,或者根本没有做任何事情。您的保存代码很好。您不会将数据网格视图转换为数据表;当 DGV 绑定到表时,在 UI 中编辑您在 DGV 中看到的数据将编辑数据表的内容
-
sqlserver 是使用始终连接的数据库,还是您的程序每次运行时都连接数据库?如果您已退出表单,我不明白如何刷新数据集数据。你打开一个新表格吗?
-
在运行保存代码之前,您是否在任何地方调用了 AcceptChanges?
-
不要调用 AcceptChanges。我正在针对可能有问题的事情提出问题,我只是希望他们得到回答,我不希望您做出假设并开始编写代码..如果您经常将代码作为一个问题进行编辑,这将使事情变得更加困难正试图被诊断出来。再次删除AcceptChanges,绝对是错误的做法
标签: c# sql-server winforms datatable datagridview