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上建的数据库做测试用 会不会有影响啊 哪位大哥帮忙看一下哪的代码有问题 还是别的问题 这是我做的第一个程序啊 谢谢各位了
Refresh()是你自己写的方法还是 winform里那个Refresh()。如果是后者,这个方法仅仅是重新绘制控件。如果你要刷新数据,你的再加载一遍数据,或者把删除的数据从gridview里写代码删除。建议你看看.net里的数据绑定相关知识,你这样写又费劲又不好维护。可以绑定dataSet或者其他数据集,这样数据集改变了,控件上的数据也同步改变,然后你在后台写代码将数据集的数据和数据库中的数据保持同步。
WINFROM中datagridview要更新的话,一般是再次查询数据库。
你可以把你查询数据库并且将数据绑定到datagridview上的方法提取出来,命名为BindDatas();
当你执行删除或者修改或者插入数据操作后,就调用该方法即可。
但是如果你删除或者修改或者插入数据后,你数据库的数据都没有变化,那说明你方法有问题。
调试看看SQL语句是否正确。
是当时不显示变化 但是下次再运行程序的时候就有变化了 只是操作和数据库的更新不同步 不知道是datagridview的原因还是数据库的原因 我先试试你说的方法 谢谢