○TableAdapterの基底クラスを作成
using System.ComponentModel;
using System.Data.SqlClient;
using System.Reflection;
using System.Web;
using System;
namespace Logic.dataset
{
public class TableAdapterBase : Component
{
public SqlDataAdapter InnerAdapter
{
get
{
return (SqlDataAdapter)GetType().GetProperty("Adapter",
BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this, null);
}
}
static public event SqlRowUpdatedEventHandler sqlRowUpdatedEvent = delegate { };
static public event SqlRowUpdatingEventHandler sqlRowUpdatingEvent = delegate { };
public TableAdapterBase() : base()
{
InnerAdapter.RowUpdated += rowUpdatedEventHandler;
InnerAdapter.RowUpdating += rowUpdatingEventHandler;
}
private void rowUpdatedEventHandler(object sender, SqlRowUpdatedEventArgs e)
{
sqlRowUpdatedEvent(sender, e);
}
private void rowUpdatingEventHandler(object sender, SqlRowUpdatingEventArgs e)
{
sqlRowUpdatingEvent(sender, e);
}
}
}
○TableAdapterの基底クラスを変更

○イベントを設定
・Page_Load部
Logic.dataset.TableAdapterBase.sqlRowUpdatedEvent += putLogSqlRowUpdatedHandler;
・Page_Unload部
Logic.dataset.TableAdapterBase.sqlRowUpdatedEvent -= putLogSqlRowUpdatedHandler;
private static void putLogSqlRowUpdatedHandler(object sender, System.Data.SqlClient.SqlRowUpdatedEventArgs e)
{
putLog(e.Row);
}
private static void putLogSqlRowUpdatingHandler(object sender, System.Data.SqlClient.SqlRowUpdatingEventArgs e)
{
//putLog(e.Row);
}
※dt.Update()系は拾えるが、dt.Delete()系はダメ。Update()でDeleteしていたら拾える?
SqlDataAdapterはsealedの為、拡張できない。。。