[英]C# SQL DataGridView change field before updating database
我有一個WindowsForms應用程序,其中DataGridView綁定到SQL數據庫。 除一個(“ 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;
}
可以,但是我想知道是否有更好的方法可以做到這一點。 謝謝
您需要在更新時間后將更改合並回數據集
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.