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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值