Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Objects / ObjectViewEntityCollectionData.cs / 1305376 / ObjectViewEntityCollectionData.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.ComponentModel; using System.Data.Objects.DataClasses; using System.Data.Objects.Internal; using System.Diagnostics; using System.Data.Common; namespace System.Data.Objects { ////// Manages a binding list constructed from an EntityCollection. /// ////// Type of the elements in the binding list. /// ////// Type of element in the underlying EntityCollection. /// ////// The binding list is initialized from the EntityCollection, /// and is synchronized with changes made to the EntityCollection membership. /// This class always allows additions and removals from the binding list. /// internal sealed class ObjectViewEntityCollectionData: IObjectViewData where TItemElement : class where TViewElement : TItemElement { private List _bindingList; private EntityCollection _entityCollection; private readonly bool _canEditItems; /// /// True if item that was added to binding list but not underlying entity collection /// is now being committed to the collection. /// Otherwise false. /// Used by CommitItemAt and OnCollectionChanged methods to coordinate addition /// of new item to underlying entity collection. /// private bool _itemCommitPending; ////// Construct a new instance of the ObjectViewEntityCollectionData class using the supplied entityCollection. /// /// /// EntityCollection used to populate the binding list. /// internal ObjectViewEntityCollectionData(EntityCollectionentityCollection) { _entityCollection = entityCollection; _canEditItems = true; // Allow deferred loading to occur when initially populating the collection _bindingList = new List (entityCollection.Count); foreach (TViewElement entity in entityCollection) { _bindingList.Add(entity); } } #region IObjectViewData Members public IList List { get { return _bindingList; } } public bool AllowNew { get { return !_entityCollection.IsReadOnly; } } public bool AllowEdit { get { return _canEditItems; } } public bool AllowRemove { get { return !_entityCollection.IsReadOnly; } } public bool FiresEventOnAdd { get { return true; } } public bool FiresEventOnRemove { get { return true; } } public bool FiresEventOnClear { get { return true; } } public void EnsureCanAddNew() { // nop } public int Add(TViewElement item, bool isAddNew) { if (isAddNew) { // Item is added to bindingList, but pending addition to entity collection. _bindingList.Add(item); } else { _entityCollection.Add(item); // OnCollectionChanged will be fired, where the binding list will be updated. } return _bindingList.Count - 1; } public void CommitItemAt(int index) { TViewElement item = _bindingList[index]; try { _itemCommitPending = true; _entityCollection.Add(item); // OnCollectionChanged will be fired, where the binding list will be updated. } finally { _itemCommitPending = false; } } public void Clear() { if (0 < _bindingList.Count) { List
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ContextMarshalException.cs
- Decimal.cs
- controlskin.cs
- RecognizedPhrase.cs
- DisplayMemberTemplateSelector.cs
- DataGridViewLinkColumn.cs
- shaperfactoryquerycacheentry.cs
- NavigateUrlConverter.cs
- ApplicationActivator.cs
- GeneralTransform3DGroup.cs
- _SslState.cs
- GeneralTransform.cs
- KnownTypesProvider.cs
- ServiceHostingEnvironment.cs
- XmlUTF8TextReader.cs
- OdbcEnvironmentHandle.cs
- HttpApplication.cs
- UserControlAutomationPeer.cs
- HttpDictionary.cs
- BaseTemplateParser.cs
- ConfigurationElementCollection.cs
- WebPageTraceListener.cs
- GlyphShapingProperties.cs
- BufferedReadStream.cs
- RowUpdatingEventArgs.cs
- Animatable.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- DataGridViewColumnConverter.cs
- FieldTemplateFactory.cs
- WindowInteropHelper.cs
- CodeExpressionCollection.cs
- SqlBooleanMismatchVisitor.cs
- XmlTextReaderImpl.cs
- ProvidersHelper.cs
- XmlBinaryReader.cs
- DSASignatureDeformatter.cs
- TemplateControlParser.cs
- CurrentChangingEventManager.cs
- RemoteWebConfigurationHostServer.cs
- Library.cs
- TextProperties.cs
- HotSpotCollectionEditor.cs
- ExpressionPrefixAttribute.cs
- Module.cs
- DiscardableAttribute.cs
- ObjectAnimationBase.cs
- XmlWriter.cs
- CultureMapper.cs
- RouteItem.cs
- WindowsToolbarAsMenu.cs
- DataServiceContext.cs
- IDReferencePropertyAttribute.cs
- InsufficientMemoryException.cs
- Container.cs
- EmptyElement.cs
- XamlStackWriter.cs
- PixelFormats.cs
- StateDesigner.LayoutSelectionGlyph.cs
- SimpleTextLine.cs
- XmlSignatureProperties.cs
- KerberosSecurityTokenParameters.cs
- SettingsAttributes.cs
- Route.cs
- BamlResourceContent.cs
- WebPartConnectionsCancelVerb.cs
- UnsettableComboBox.cs
- EncryptedKeyIdentifierClause.cs
- CodeDelegateInvokeExpression.cs
- BindingWorker.cs
- Drawing.cs
- ClosureBinding.cs
- Item.cs
- CompilationUtil.cs
- SizeConverter.cs
- TdsParserStaticMethods.cs
- DataObjectPastingEventArgs.cs
- ChangeConflicts.cs
- StorageComplexTypeMapping.cs
- ShapingEngine.cs
- ValidationSummary.cs
- ScaleTransform3D.cs
- securitycriticaldata.cs
- EncodingNLS.cs
- TemplateXamlParser.cs
- Misc.cs
- UserControlAutomationPeer.cs
- SectionUpdates.cs
- StringOutput.cs
- TextEffect.cs
- WebPartMovingEventArgs.cs
- DiagnosticStrings.cs
- ProofTokenCryptoHandle.cs
- BezierSegment.cs
- ContextMenu.cs
- BeginGetFileNameFromUserRequest.cs
- MaskedTextProvider.cs
- MetadataCache.cs
- CallbackHandler.cs
- TextEditorCharacters.cs
- PolyLineSegment.cs