现在用Winform开发程序的人好像越来越少了,我也很久没写代码了。
最近帮朋友写个小东西用到DataGridView绑定DataTable发现有点小问题,这里贴出来分享一下,怀旧一下。
需求是这样的,DataGridView绑定一个DataTable,在DataGridView上进行增删改查,保存后存入数据库。
开始我是这样写的(这里只写出问题和解决方法,不写完整代码了)
================================================================================
DataGridView grd;
DataTable dt;
绑定
grd.DataSource = dt;
修改在UI上操作
保存
foreach(DataRow row in dt.Rows)
{
if (row.RowState == DataRowState.Added)
row[index]插入数据库insert
else if (row.RowState == DataRowState.Modified)
修改数据库update
else if (row.RowState == DataRowState.Deleted)
删除delete
}
====================================================================================
按上面写发现修改后保存不上,跟踪后发现是RowState始终是Unchanged
上网搜了一下居然没找到正确的方法,看来用Winform的人真是越来越少了。
翻了一下以前写的代码找到了正确方法如下:
====================================================================================
这里就不讲大道理了,原理自己上网搜吧,主要有两个要点容易忽略:
1.绑定方法,不要直接绑定DataTable,应该绑BindingSource
BindingSource bs = new BindingSource();
bs.DataSource = dt;
grd.DataSource = bs;
2.删除时从DataRow中取值要下参数
row["ID", DataRowVersion.Original]
3.保存之前加两句话
grd.EndEdit();
bs.EndEdit();
=====================================================================================
有兴趣的可以试试看
不明白的可以加我QQ2632770080