我有一个表适配器,我想在触发 RowUpdated 事件时执行一些操作。我不知道在哪里放置代码以将处理程序添加到事件。
public partial class MyTableAdapter
{
void OnRowUpdated(object sender, System.Data.Odbc.OdbcRowUpdatedEventArgs e)
{
}
}
创建 TableAdapter 时如何运行下面的代码?
Adapter.RowUpdated +=
new System.Data.Odbc.OdbcRowUpdatedEventHandler(OnRowUpdated);
我分两个阶段解决了这个问题。
A。添加部分类并扩展表适配器
b.在使用此适配器之前首先调用一个方法(例如在创建它的实例之后在主窗体中)。
下面的代码是为了解决我使用 SQL CE 的特定问题,以便能够更新表上的 ID。但是,您可以使用扩展方法来包装 RowUpdated 事件并将其公开给其他类(即 MyRowUpdated)
扩展名
public partial class ScannedItemsTableAdapter
{
public void InitEvents()
{
this._adapter.RowUpdated += _adapter_RowUpdated;
}
void _adapter_RowUpdated(object sender, SqlCeRowUpdatedEventArgs e)
{
if (e.Status == UpdateStatus.Continue &&
e.StatementType == StatementType.Insert)
{
var pk = e.Row.Table.PrimaryKey;
pk[0].ReadOnly = false;
SqlCeCommand cmd = new SqlCeCommand("SELECT @@IDENTITY",
e.Command.Connection, e.Command.Transaction);
object id = (decimal)cmd.ExecuteScalar();
e.Row[pk[0]] = Convert.ToInt32(id);
e.Row.AcceptChanges();
}
}
}
主窗体中的调用:
tableAdapter = new ScannedItemsTableAdapter();
tableAdapter.Fill(ds.ScannedItems);
tableAdapter.InitEvents();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)