当前位置:编程学习 > C#/ASP.NET >>

请教 子窗口DGV数据库删除 实现

我在父窗体中MDI了 多个子窗体 窗体里有DataGridView控件分别显示不同数据库中的信息  父窗体连接数据库
我需要在子窗体中有删除功能 
用了updata函数  但是只有控件中的内容被删除了 数据库中没有被删除

请教是什么原因啊 --------------------编程问答-------------------- int id=Int32.Parse(this.dataGridView1.Rows[this.dataGridView1.CurrentRow.Index].Cells["id"].Value.ToString());
//删除
adapter.update(datatable)更新 --------------------编程问答-------------------- 我就是用类似的方法
最后用updata的
结果数据库中数据没有删除
只有DGV中的删了  --------------------编程问答--------------------

        //查询
        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;        }

--------------------编程问答-------------------- DataGridView拥有数据源DataTable

则删除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() --------------------编程问答--------------------
引用 11 楼 nhl_7 的回复:
如果楼主程序弄了三层结构的话,这个问题应该不会出现。如果不分三层或者不清楚三层怎么做,那就换这种矬方法:
第一步:触发update之前,(代码里)把修改的datagridview的currentrow从当前行换到其他行去
第二部:datagridview绑定的datatable.update()



这个可行  谢谢大哥
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,