C# DataGridView 绑定 DataTable 正确用法

现在用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

你可能感兴趣的:(datagridview,winform,Unchanged,绑定,c#)