在Winform應用程序上,我有一個datagridview,允許用戶查看數據庫中的幾個日期。它顯示日期在選定範圍內的行,然後用戶可以更改任何行上的日期,並點擊更新按鈕將這些更改保存到數據庫。然後窗體刷新datagridview,刪除不在選定日期範圍內的任何行。未保存datagridview值
當數據網格首次被填充或刷新時,我從數據庫中提取數據並添加一個默認爲False的Changed列。這成爲Datagridview的數據源。
dadapt.Fill(lDT_transReview);
lDT_transReview.Columns.Add("Changed",typeof(Boolean), "false");
dgTransReview.DataSource = lDT_transReview;
要檢查日期竟是變化(沒有剛剛進入同一天),我原來的日期在臨時變量存儲在開始編輯的事件。然後在編輯事件結束時,我比較日期並將「已更改」布爾值複選框設置爲true。
dgTransReview["Changed", e.RowIndex].Value = "True";
然後在保存行的代碼中,我使用了一個foreach循環來查看'changed'列是否爲true。
foreach (DataGridViewRow row in dgTransReview.Rows)
{
if (row.Cells["Changed"].Value.ToString() == "True")
{
//Code to save individual row with changes to database
}
}
TrandRefresh();
我得到的問題是更改的單元格似乎沒有保持該值。當它將值設置爲True時,單元在更新之前爲空(但爲True後),並且當我到達foreach循環時,由於單元格再次爲空,我得到一個對象未設置錯誤。