我有一个带有绑定到 SQL 数据库的 DataGridView 的 WindowsForms 应用程序。除了一列(“ts_last_edit”)之外的所有列都是可编辑的。每次有人更改其他一些列并保存更改时,我只想使用当前日期时间以编程方式更新“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;
}
这工作正常,但我想知道是否有更好的方法来做到这一点。谢谢
您需要在更新时间后将更改合并回数据集
private void brandBookBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
var changes = dataSet1.GetChanges();
if(changes!=null && changes.Tables["BrandBook"].Rows.Count>0)
{
foreach(row in changes.Tables["BrandBook"].Rows)
{
row["ts_last_edit"] = DateTime.Now;
}
}
dataSet1.Merge(changes, false,System.Data.MissingSchemaAction.Add);
this.brandBookBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.dataSet1);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句