Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / System / Data / DataTableReaderListener.cs / 1 / DataTableReaderListener.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.Data.Common; using System.Collections; using System.ComponentModel; internal sealed class DataTableReaderListener { private DataTable currentDataTable = null; private bool isSubscribed = false; private WeakReference readerWeak; internal DataTableReaderListener(DataTableReader reader) { if (reader == null) throw ExceptionBuilder.ArgumentNull("DataTableReader"); if (currentDataTable != null) { UnSubscribeEvents(); } this.readerWeak = new WeakReference(reader); currentDataTable = reader.CurrentDataTable; if (currentDataTable != null) SubscribeEvents(); } internal void CleanUp() { UnSubscribeEvents(); } internal void UpdataTable(DataTable datatable) { if (datatable == null) throw ExceptionBuilder.ArgumentNull("DataTable"); UnSubscribeEvents(); currentDataTable = datatable; SubscribeEvents(); } private void SubscribeEvents() { if (currentDataTable == null) return; if (isSubscribed) return; currentDataTable.Columns.ColumnPropertyChanged += new CollectionChangeEventHandler(SchemaChanged); currentDataTable.Columns.CollectionChanged += new CollectionChangeEventHandler(SchemaChanged); currentDataTable.RowChanged += new DataRowChangeEventHandler(DataChanged ); currentDataTable.RowDeleted += new DataRowChangeEventHandler(DataChanged); currentDataTable.TableCleared += new DataTableClearEventHandler(DataTableCleared); isSubscribed = true; } private void UnSubscribeEvents() { if (currentDataTable == null) return; if (!isSubscribed) return; currentDataTable.Columns.ColumnPropertyChanged -= new CollectionChangeEventHandler(SchemaChanged); currentDataTable.Columns.CollectionChanged -= new CollectionChangeEventHandler(SchemaChanged); currentDataTable.RowChanged -= new DataRowChangeEventHandler(DataChanged ); currentDataTable.RowDeleted -= new DataRowChangeEventHandler(DataChanged); currentDataTable.TableCleared -= new DataTableClearEventHandler(DataTableCleared); isSubscribed = false; } private void DataTableCleared(object sender, DataTableClearEventArgs e) { DataTableReader reader = (DataTableReader) readerWeak.Target; if (reader != null) { reader.DataTableCleared(); } else { UnSubscribeEvents(); } } private void SchemaChanged(object sender, CollectionChangeEventArgs e) { DataTableReader reader = (DataTableReader) readerWeak.Target; if (reader != null) { reader.SchemaChanged(); } else { UnSubscribeEvents(); } } private void DataChanged( object sender, DataRowChangeEventArgs args ) { DataTableReader reader = (DataTableReader) readerWeak.Target; if (reader != null) { reader.DataChanged(args); } else { UnSubscribeEvents(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BitmapInitialize.cs
- DetailsViewRowCollection.cs
- ConfigsHelper.cs
- Types.cs
- TranslateTransform3D.cs
- CalendarButton.cs
- TargetPerspective.cs
- Cursor.cs
- ScrollBarRenderer.cs
- MdiWindowListItemConverter.cs
- SchemaImporterExtensionsSection.cs
- ListSortDescriptionCollection.cs
- SystemUdpStatistics.cs
- ColorInterpolationModeValidation.cs
- HttpModuleCollection.cs
- ErrorHandler.cs
- RestHandlerFactory.cs
- RecognizerInfo.cs
- HostProtectionException.cs
- XsdDuration.cs
- LinearKeyFrames.cs
- Compiler.cs
- SymbolType.cs
- IdentityNotMappedException.cs
- FtpWebResponse.cs
- IdentityReference.cs
- GraphicsContainer.cs
- WebMessageBodyStyleHelper.cs
- DataServiceQuery.cs
- SchemaImporter.cs
- ObjectToIdCache.cs
- ValidationErrorCollection.cs
- SystemResourceKey.cs
- VisualBasicSettingsConverter.cs
- AssertHelper.cs
- OverrideMode.cs
- StrokeNodeOperations.cs
- IDispatchConstantAttribute.cs
- WorkflowInstanceExtensionProvider.cs
- AmbientLight.cs
- LocalizableAttribute.cs
- CollectionCodeDomSerializer.cs
- SerializationAttributes.cs
- XmlDocumentFragment.cs
- SecurityIdentifierElement.cs
- LineSegment.cs
- ScriptingWebServicesSectionGroup.cs
- SparseMemoryStream.cs
- InkCanvasInnerCanvas.cs
- RequestCacheEntry.cs
- VolatileEnlistmentMultiplexing.cs
- webbrowsersite.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- Queue.cs
- MachinePropertyVariants.cs
- MissingFieldException.cs
- NotSupportedException.cs
- TransformPatternIdentifiers.cs
- DetailsViewUpdatedEventArgs.cs
- ProcessModule.cs
- XmlSchemaGroup.cs
- DataGridViewSortCompareEventArgs.cs
- SQLBinary.cs
- HttpPostServerProtocol.cs
- NetworkInformationPermission.cs
- InstanceKeyNotReadyException.cs
- ObjectIDGenerator.cs
- CompilationPass2TaskInternal.cs
- PropertyChangeTracker.cs
- SrgsElement.cs
- CompositeDispatchFormatter.cs
- NoClickablePointException.cs
- InkPresenter.cs
- UserControlFileEditor.cs
- CookieParameter.cs
- DataShape.cs
- DefaultSection.cs
- CodeExpressionStatement.cs
- UpdatePanel.cs
- ValidationPropertyAttribute.cs
- Int32CollectionValueSerializer.cs
- SoapCodeExporter.cs
- control.ime.cs
- TextSelection.cs
- SqlRetyper.cs
- PagesChangedEventArgs.cs
- DataServiceHost.cs
- NativeMethods.cs
- WmpBitmapDecoder.cs
- SessionStateSection.cs
- ServicePrincipalNameElement.cs
- BitmapDownload.cs
- EncodingNLS.cs
- TrailingSpaceComparer.cs
- HelpInfo.cs
- FormsAuthenticationConfiguration.cs
- SystemEvents.cs
- SessionState.cs
- AttachInfo.cs
- SmtpSection.cs