首页 新闻 会员 周边

winform程序Datagridview和数据库不能达到与操作的同步

0
悬赏园豆:20 [已解决问题] 解决于 2012-04-06 16:49

        private void btnDelete_Click(object sender, EventArgs e)
        {
            //只能显示
            string sql = "delete from T_Cost where HasConfirm=0 ";
            //如果datagridview的当前行被选中
            if (dgvEntry.CurrentRow.Selected)
            {
                //将sql语句 delete from T_Cost where HasConfirm=0 and CostId =(CostId号)
                sql = sql + "and CostcostIDDataGridViewTextBoxColumn"].Value.ToString());
            }
            int n = 0;
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand cmd = new SqlCommand(sql, conn);
            conn.Open();
            n = cmd.ExecuteNonQuery();
            conn.Close();
            if (n > 0)
            {
                MessageBox.Show("删除成功!");
            }
            else
            {
                MessageBox.Show("不存在的ID!");
            }
            //删除完后 刷新一下当前数据
            Refresh();
        }

例如上边的这个 删除成功以后调用refresh方法 datagridview中的数据不能更新 而且有时候插入数据的时候数据库中的数据也不更新 但是下次再运行程序的时候数据已经插入或者删除了 是这个刷新的方法有问题还是数据库有缓存啊 我是在本地VS上建的数据库做测试用 会不会有影响啊 哪位大哥帮忙看一下哪的代码有问题 还是别的问题 这是我做的第一个程序啊 谢谢各位了

SmDevil的主页 SmDevil | 初学一级 | 园豆:87
提问于:2012-04-06 15:41
< >
分享
最佳答案
1

Refresh()是你自己写的方法还是 winform里那个Refresh()。如果是后者,这个方法仅仅是重新绘制控件。如果你要刷新数据,你的再加载一遍数据,或者把删除的数据从gridview里写代码删除。建议你看看.net里的数据绑定相关知识,你这样写又费劲又不好维护。可以绑定dataSet或者其他数据集,这样数据集改变了,控件上的数据也同步改变,然后你在后台写代码将数据集的数据和数据库中的数据保持同步。

收获园豆:15
会长 | 专家六级 |园豆:12401 | 2012-04-06 15:59
其他回答(1)
0

WINFROM中datagridview要更新的话,一般是再次查询数据库。

你可以把你查询数据库并且将数据绑定到datagridview上的方法提取出来,命名为BindDatas();

当你执行删除或者修改或者插入数据操作后,就调用该方法即可。

但是如果你删除或者修改或者插入数据后,你数据库的数据都没有变化,那说明你方法有问题。

调试看看SQL语句是否正确。

收获园豆:5
高高高高高手不是我 | 园豆:221 (菜鸟二级) | 2012-04-06 15:56

是当时不显示变化 但是下次再运行程序的时候就有变化了 只是操作和数据库的更新不同步 不知道是datagridview的原因还是数据库的原因 我先试试你说的方法 谢谢

支持(0) 反对(0) SmDevil | 园豆:87 (初学一级) | 2012-04-06 16:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册