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
- DataAdapter.cs
- DataGridViewControlCollection.cs
- TableLayoutSettings.cs
- ConfigXmlCDataSection.cs
- SeekStoryboard.cs
- UpdateException.cs
- LOSFormatter.cs
- SecurityTokenParametersEnumerable.cs
- ListViewSelectEventArgs.cs
- HtmlInputControl.cs
- JournalNavigationScope.cs
- EdmRelationshipRoleAttribute.cs
- DotExpr.cs
- TrackBarRenderer.cs
- BaseValidator.cs
- XmlSchemaGroup.cs
- Sentence.cs
- TreeViewItemAutomationPeer.cs
- ConditionValidator.cs
- ContainerVisual.cs
- PrintDialog.cs
- XmlILIndex.cs
- FontInfo.cs
- DirectionalLight.cs
- RSAPKCS1SignatureDeformatter.cs
- AssociationSet.cs
- TextFindEngine.cs
- DataRelationPropertyDescriptor.cs
- _TLSstream.cs
- DnsPermission.cs
- MemberJoinTreeNode.cs
- _WebProxyDataBuilder.cs
- WorkflowRuntimeService.cs
- HtmlInputCheckBox.cs
- OracleRowUpdatingEventArgs.cs
- InitializerFacet.cs
- MsmqTransportBindingElement.cs
- RowVisual.cs
- AssemblyBuilder.cs
- handlecollector.cs
- CmsUtils.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- EdgeModeValidation.cs
- ExpressionBuilder.cs
- MappingException.cs
- CategoryNameCollection.cs
- UIntPtr.cs
- COM2PictureConverter.cs
- RegexParser.cs
- TouchesCapturedWithinProperty.cs
- RuntimeArgument.cs
- StronglyTypedResourceBuilder.cs
- InlineCollection.cs
- ContainerControlDesigner.cs
- COAUTHINFO.cs
- ImportCatalogPart.cs
- ToolStripLabel.cs
- CollectionChangeEventArgs.cs
- CleanUpVirtualizedItemEventArgs.cs
- Compress.cs
- ToggleButton.cs
- List.cs
- ApplicationSecurityManager.cs
- SerialReceived.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- ArrayExtension.cs
- UniqueID.cs
- DataServiceExpressionVisitor.cs
- PropertyTab.cs
- CookieProtection.cs
- _ListenerRequestStream.cs
- BitmapEffectInput.cs
- AtomMaterializer.cs
- HierarchicalDataTemplate.cs
- Internal.cs
- MasterPageBuildProvider.cs
- RSAPKCS1KeyExchangeFormatter.cs
- LogRecordSequence.cs
- LocatorManager.cs
- DecimalConstantAttribute.cs
- ConnectionStringSettings.cs
- AutoCompleteStringCollection.cs
- MissingMemberException.cs
- RegexCapture.cs
- CellConstantDomain.cs
- AttributeData.cs
- WebConfigurationFileMap.cs
- CommandEventArgs.cs
- Separator.cs
- XmlText.cs
- DataControlPagerLinkButton.cs
- SemaphoreSlim.cs
- StorageConditionPropertyMapping.cs
- ProfilePropertySettingsCollection.cs
- CollectionDataContract.cs
- BinaryParser.cs
- ISAPIWorkerRequest.cs
- DocComment.cs
- recordstatefactory.cs
- FullTrustAssembly.cs