/// <summary> /// Additional actions to be taken on connecting DataSource /// </summary> /// <param name="aTarget"> /// Target object <see cref="System.Object"/> /// </param> /// <remarks> /// Connect all the messaging derived adaptors need here /// </remarks> internal override void OnDataSourceConnect(object aTarget) { base.OnDataSourceConnect(aTarget); if (aTarget == null) { return; } if (aTarget is IListEvents) { IListEvents list = (aTarget as IListEvents); list.ListChanged += OnListChanged; list.ElementAdded += OnElementAdded; list.ElementChanged += OnElementChanged; list.ElementRemoved += OnElementRemoved; list.ElementsSorted += OnElementsSorted; list = null; } else if (aTarget is IBindingList) { Console.WriteLine("DataSourceConnect to IBindingList"); (aTarget as IBindingList).ListChanged += IBindingListChangedHandler; } // else if (aTarget is System.Data.DataTable) { // Console.WriteLine ("DataSourceConnect to DataTable"); // } // else // Console.WriteLine ("DataSourceConnect (Target=" + aTarget + ")"); }
/// <summary> /// Additional actions to be taken on disconnecting DataSource /// </summary> /// <param name="aTarget"> /// Target object <see cref="System.Object"/> /// </param> /// <remarks> /// Disconnect all the messaging derived adaptors need here /// </remarks> internal override void OnDataSourceDisconnect(object aTarget) { base.OnDataSourceDisconnect(aTarget); if (aTarget == null) { return; } if (aTarget is IListEvents) { IListEvents list = (aTarget as IListEvents); // No need to connect OnListChanged when taking the Adaptor DataSource // Should be used from different approach forms from software list.ListChanged -= OnListChanged; list.ElementAdded -= OnElementAdded; list.ElementChanged -= OnElementChanged; list.ElementRemoved -= OnElementRemoved; list.ElementsSorted -= OnElementsSorted; list = null; } else if (aTarget is IBindingList) { // Console.WriteLine ("DataSourceDisconnect from IBindingList"); (aTarget as IBindingList).ListChanged -= IBindingListChangedHandler; } else if (aTarget is System.Data.DataTable) { // Console.WriteLine ("DataSourceDisconnect from DataTable"); (aTarget as DataTable).RowDeleted += delegate(object sender, DataRowChangeEventArgs e) { }; } // else if (aTarget is System.Data.DataTable) { // Console.WriteLine ("DataSourceDisconnect to DataTable"); // } // else // Console.WriteLine ("DataSourceDisconnect (Target=" + aTarget + ")"); }