○TableAdapterの基底クラスを作成
using System.ComponentModel; using System.Data.SqlClient; using System.Reflection; using System.Web; namespace Logic.dataset { public class TableAdapterBase : Component { public SqlDataAdapter InnerAdapter { get { return (SqlDataAdapter)GetType().GetProperty("Adapter", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this, null); } } } }
○イベントを設定
public static void setTableAdapterUpdateLogEvent(Logic.dataset.TableAdapterBase ta) { ta.InnerAdapter.RowUpdated += new System.Data.SqlClient.SqlRowUpdatedEventHandler(Adapter_RowUpdated); //ta.InnerAdapter.RowUpdating += new System.Data.SqlClient.SqlRowUpdatingEventHandler(Adapter_RowUpdating); } private static void Adapter_RowUpdated(object sender, System.Data.SqlClient.SqlRowUpdatedEventArgs e) { putLog(e.Row); } //private static void Adapter_RowUpdating(object sender, System.Data.SqlClient.SqlRowUpdatingEventArgs e) //{ // putLog(e.Row); //}
※dt.Update()系は拾えるが、dt.Delete()系はダメ。Update()でDeleteしていたら拾える?