Datagridview值未保存

本文关键字:保存 Datagridview | 更新日期: 2023-09-27 18:11:19

在Winform应用程序上,我有一个datagridview,允许用户查看数据库中的几个日期。它在选定的范围内显示带有日期的行,然后用户可以更改任何行上的日期,并点击更新按钮将这些更改保存到数据库中。然后,表单刷新datagridview,删除不再在所选日期范围内的所有行。

当第一次填充或刷新数据网格时,我从数据库中提取数据,并添加一个默认为False的Changed列。这将成为Datagridview的数据源。

dadapt.Fill(lDT_transReview);
lDT_transReview.Columns.Add("Changed",typeof(Boolean), "false");
dgTransReview.DataSource = lDT_transReview;

为了检查日期是否被更改(不只是输入相同的日期),我将原始日期存储在开始编辑事件的一个临时变量中。然后在Edit事件结束时,比较日期并将'changed'布尔复选框设置为true。

dgTransReview["Changed", e.RowIndex].Value = "True";

然后在代码中保存行,我使用foreach循环来查看'changed'列是否为真。

foreach (DataGridViewRow row in dgTransReview.Rows)
        {
            if (row.Cells["Changed"].Value.ToString() == "True")
            {
               //Code to save individual row with changes to database
            }
        }
TrandRefresh();

我得到的问题是,已更改的单元格似乎没有保持值。当它将值设置为True时,单元格在更新之前为Null(但之后为True),当我到达foreach循环时,我得到一个对象未设置错误,因为单元格再次为Null。

Datagridview值未保存

没关系,我明白了。问题是Datagrid中的已更改列没有将数据属性设置为表中的已更改列。(我还必须更改将Changed列添加到数据表的方式,因为上面所示的方法使字段只读。)

你可以使用:首先:选择(焦点)文本框出datagridview第二个:sendkeys.send("{F2}")到这个文本框第三:使用函数将数据保存在datagridview中BR阿什拉夫