dgv_问题绑定了 aDataSet.DataSet1.Tables[0],不知道怎么得到 Tables[0] 的当前行(有当前行吗?)于是我的代码:int i = dgv_问题.CurrentRow.Index;
if (i < 0) return;aDataSet.DataSet1.Tables[0].Rows.RemoveAt(i); //关键是这句对不对
if (aDataSet.updateData() < 0) MessageBox.Show("删除出错"); //通过 ada 进行更新看上去很危险,dgv 的当前行索引和table的一样吗?
删除绑定过的 dataGridView 当前行的代码怎么写呢?
if (i < 0) return;aDataSet.DataSet1.Tables[0].Rows.RemoveAt(i); //关键是这句对不对
if (aDataSet.updateData() < 0) MessageBox.Show("删除出错"); //通过 ada 进行更新看上去很危险,dgv 的当前行索引和table的一样吗?
删除绑定过的 dataGridView 当前行的代码怎么写呢?
至于“删除绑定过的 dataGridView 当前行的代码怎么写呢?”因为列表和数据源的索引都是从0开始的,当然各个程序处理可能不一样
总之,删除表的行是最本质的,毕竟dataGridView的源是表
aDataSet.DataSet1.Tables[0].Rows.RemoveAt(i); //关键是这句对不对 这样当然很危险!
只要你的DataGridView一排序,下标和DataSet就不一样了.你应该在用户操作完之后,再更新到DataSet,而不是每操作一行就更新一次.
要更新DataSet时,直接把DataGridView绑定的数据源保存回去即可:
aDataSet.DataSet1.Tables[0]=dataGridView1.DataSource as DataTable;
还有其他更简单的办法吗?
aDataSet.DataSet1.Tables[0].Rows.RemoveAt(i)
这种方法虽然从界面上实现了删除,但是无法更新删除数据库,必须用 row 的Delete()做标记,再更新。这个问题让我郁闷了n分钟,以前一直用自动的三层代码来直接用 sql 更新,初用 ada 的更新方法,多学习:)
DataTable绑定到DataGridView之后,只要DataTable改动(增删改),DataGridView亦会跟着改动.
Adapter的Update方法,通过判断每一行的State标记来执行相关的操作,若用RomoveAt,即是物理删除内存表中的行,当然更新不回数据库.正确的方法是,删除内存表的行时,只要更新它的状态为Deleted即可