Code:
/ 4.0 / 4.0 / untmp / 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
- Relationship.cs
- EventLogPermission.cs
- ImageAutomationPeer.cs
- JsonSerializer.cs
- ListCollectionView.cs
- IPGlobalProperties.cs
- AssociationEndMember.cs
- SystemNetworkInterface.cs
- FactoryGenerator.cs
- AuthenticateEventArgs.cs
- CounterSampleCalculator.cs
- CallbackValidatorAttribute.cs
- SingleStorage.cs
- HwndStylusInputProvider.cs
- DatasetMethodGenerator.cs
- ScriptingWebServicesSectionGroup.cs
- HyperLinkStyle.cs
- SchemaInfo.cs
- ExtendedPropertyInfo.cs
- ConfigurationErrorsException.cs
- Application.cs
- BitmapMetadataEnumerator.cs
- SqlTypeSystemProvider.cs
- IERequestCache.cs
- ValuePattern.cs
- Vector.cs
- BitmapInitialize.cs
- MemberInfoSerializationHolder.cs
- XmlSchemaValidationException.cs
- _BaseOverlappedAsyncResult.cs
- ScriptingSectionGroup.cs
- ExecutionEngineException.cs
- HtmlTableRow.cs
- Int32Collection.cs
- DataGridViewUtilities.cs
- ButtonChrome.cs
- documentsequencetextview.cs
- WindowsGrip.cs
- HttpCapabilitiesEvaluator.cs
- ProviderCommandInfoUtils.cs
- SafeArrayRankMismatchException.cs
- AudioStateChangedEventArgs.cs
- RtfToken.cs
- ClaimTypeRequirement.cs
- ExceptionHandlersDesigner.cs
- SetStateDesigner.cs
- CharKeyFrameCollection.cs
- XmlCDATASection.cs
- SingleTagSectionHandler.cs
- WebControlAdapter.cs
- RelatedView.cs
- SafeFileHandle.cs
- TextOnlyOutput.cs
- AsymmetricKeyExchangeFormatter.cs
- TreeNodeStyleCollection.cs
- DataGridViewCellPaintingEventArgs.cs
- Rect3D.cs
- ProviderException.cs
- UntypedNullExpression.cs
- MessageHeaderT.cs
- _FtpControlStream.cs
- sqlser.cs
- AttachInfo.cs
- XmlDownloadManager.cs
- JsonEnumDataContract.cs
- HandlerFactoryWrapper.cs
- validationstate.cs
- RegexCompilationInfo.cs
- List.cs
- SchemaSetCompiler.cs
- ContainerFilterService.cs
- ServerValidateEventArgs.cs
- DocumentAutomationPeer.cs
- LongValidator.cs
- ScrollItemPattern.cs
- MasterPage.cs
- MobileCapabilities.cs
- BufferModeSettings.cs
- MutexSecurity.cs
- DetailsViewPagerRow.cs
- QueuePropertyVariants.cs
- AnnotationResourceChangedEventArgs.cs
- ProfileBuildProvider.cs
- SQLStringStorage.cs
- BulletedListEventArgs.cs
- DbParameterCollectionHelper.cs
- ProcessModule.cs
- JapaneseLunisolarCalendar.cs
- TextHidden.cs
- SSmlParser.cs
- HttpSessionStateBase.cs
- storepermissionattribute.cs
- EntityViewContainer.cs
- DesignerContextDescriptor.cs
- ApplicationFileCodeDomTreeGenerator.cs
- DataGridViewComboBoxCell.cs
- WebPartEditorApplyVerb.cs
- __FastResourceComparer.cs
- ToolStripManager.cs
- Control.cs