2

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

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

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

为了检查日期是否实际更改(不仅仅是输入相同的日期),我将原始日期存储在开始编辑事件的临时变量中。然后在结束编辑事件上,我比较日期并将“已更改”布尔复选框设置为真。

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

然后在保存行的代码上,我使用 foreach 循环来查看“已更改”列是否为真。

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

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

4

2 回答 2

1

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

于 2013-04-30T16:49:24.800 回答
-2

您可以使用:第一:选择(焦点)文本框出 datagridview 第二:sendkeys.send("{F2}") 到此文本框第三:使用您的函数将数据保存在 datagridview BR Ashraf

于 2021-06-08T12:23:47.530 回答