【发布时间】:2017-07-06 11:05:45
【问题描述】:
我有一个带有绑定到 SQL 数据库的 DataGridView 的 WindowsForms 应用程序。除了一个(“ts_last_edit”)之外的所有列都是可编辑的。 每次有人更改其他一些列并保存更改时,我只想以编程方式使用当前 DateTime 更新“ts_last_edit”列。 我试过这个:
...
this.MyTableAdapter.Adapter.RowUpdating += Adapter_RowUpdating;
...
private void Adapter_RowUpdating(object sender, SqlRowUpdatingEventArgs e)
{
e.Row["ts_last_edit"]=DateTime.Now;
}
但它不起作用,因为 e.Row 显然是一个只读属性。
我尝试更改 UPDATE SQL 命令并且它有效:
private void Adapter_RowUpdating(object sender, SqlRowUpdatingEventArgs e)
{
// pseudo code
string newSqlCommand= "STUFF CURRENT DATE AND TIME IN COLUMN ts_last_edit";
e.Command.CommandText = newSqlCommand;
}
这工作正常,但我想知道是否有更好的方法来做到这一点。 谢谢
【问题讨论】:
-
But it did not work because e.Row is a read-only property apparently.抛出了什么确切异常? -
需要更新row_leave事件中的值
-
@njwills 没有抛出异常。但也没有变化。
-
@Krishna 我想在将行保存到数据库时存储 DateTime,而不是在行失去焦点时存储
-
什么时候将它保存到数据库中?不是排假吗?你有按钮吗?如果是的话,就在那里
标签: c# sql datagridview