在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循环时,由于单元格再次为空,我得到一个对象未设置错误。