请教 子窗口DGV数据库删除 实现
我在父窗体中MDI了 多个子窗体 窗体里有DataGridView控件分别显示不同数据库中的信息 父窗体连接数据库我需要在子窗体中有删除功能
用了updata函数 但是只有控件中的内容被删除了 数据库中没有被删除
请教是什么原因啊 --------------------编程问答-------------------- int id=Int32.Parse(this.dataGridView1.Rows[this.dataGridView1.CurrentRow.Index].Cells["id"].Value.ToString());
//删除
adapter.update(datatable)更新 --------------------编程问答-------------------- 我就是用类似的方法
最后用updata的
结果数据库中数据没有删除
只有DGV中的删了 --------------------编程问答--------------------
--------------------编程问答-------------------- DataGridView拥有数据源DataTable
//查询
public DataTable QueryToDataTable(string DBName)
{
dt = new DataTable();
con = new OleDbConnection(connectionString);
com = new OleDbCommand("select * from " + DBName+ ";", con);
da = new OleDbDataAdapter(com);
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
//把da查到的数据填充到dt中(dt中数据与数据库中同构)
try
{
da.Fill(dt);
}
catch
{
dt = null;
}
finally
{
con.Dispose();
com.Dispose();
da.Dispose();
}
return dt;
}
//更新
public DataTable Update(string DBName,DataTable dt)
{
con = new OleDbConnection(connectionString);
com = new OleDbCommand("select * from " + DBName+ " where 0=1;", con);
da = new OleDbDataAdapter(com);
combu = new OleDbCommandBuilder(da);
da.UpdateCommand = combu.GetUpdateCommand();
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
try
{
//保存数据
da.Update(dt);
}
catch
{
return false;
}
finally
{
con.Dispose();
com.Dispose();
da.Dispose();
}
return true; }
则删除DataTable中一行数据
然后用adapter.update(datatable)即可
--------------------编程问答-------------------- 如果不行就自已写代码
这样得到更新的数据
//插入的
dt.GetChanges(DataRowState.Added)
//修改的
dt.GetChanges(DataRowState.Modified)
//删除的
new DataView(dt, null, null, DataViewRowState.Deleted).ToTable() --------------------编程问答-------------------- 我这是在一个子窗体中的 DGV
所以不能直接用常规的 command那样
所以很郁闷
父窗口建立了连接了
而且 我在这个子窗体中 添加新数据 可以
就是不能删除和 修改以前的行数据。。。。 --------------------编程问答-------------------- 主键有吧?你在主窗体中看一下//修改的
dt.GetChanges(DataRowState.Modified)
//删除的
new DataView(dt, null, null, DataViewRowState.Deleted).ToTable()
这两个有没有数据 --------------------编程问答-------------------- 刚试了一下 还是不行 --------------------编程问答-------------------- 你是直接把主窗体中的dt做为子窗体DGV有数据源? --------------------编程问答-------------------- 我说你要看一下
dt.GetChanges(DataRowState.Modified)
这个啊,update就是根据这里的内容修改数据库的 --------------------编程问答-------------------- 如果楼主程序弄了三层结构的话,这个问题应该不会出现。如果不分三层或者不清楚三层怎么做,那就换这种矬方法:
第一步:触发update之前,(代码里)把修改的datagridview的currentrow从当前行换到其他行去
第二部:datagridview绑定的datatable.update() --------------------编程问答--------------------
这个可行 谢谢大哥
补充:.NET技术 , C#