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