gpt4 book ai didi

c# - 如何将事件处理程序添加到表适配器中的 RowUpdated 事件

转载 作者:太空狗 更新时间:2023-10-29 20:32:19 24 4
gpt4 key购买 nike

我有一个 tableadapter,我想在触发 RowUpdated 事件时做一些事情。我不知道将代码放在哪里以将处理程序添加到事件。

public partial class MyTableAdapter
{
void OnRowUpdated(object sender, System.Data.Odbc.OdbcRowUpdatedEventArgs e)
{
}
}

如何让下面的代码在创建 TableAdapter 时运行?

Adapter.RowUpdated += 
new System.Data.Odbc.OdbcRowUpdatedEventHandler(OnRowUpdated);

最佳答案

我分两个阶段解决了这个问题。

一个。添加部分类并扩展表适配器

在使用此适配器之前先调用一个方法(比如在创建它的实例后以主形式调用)。

下面的代码用于解决我的 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();

关于c# - 如何将事件处理程序添加到表适配器中的 RowUpdated 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3243881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com