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
- FormViewInsertEventArgs.cs
- NamedElement.cs
- BookmarkScopeManager.cs
- ConfigurationConverterBase.cs
- TextFormatterImp.cs
- StylusSystemGestureEventArgs.cs
- DataGridViewTextBoxCell.cs
- CheckBoxBaseAdapter.cs
- ArrayWithOffset.cs
- UnsafeNativeMethods.cs
- WebPart.cs
- PingOptions.cs
- MergeFilterQuery.cs
- ExpanderAutomationPeer.cs
- StringStorage.cs
- CompilationUnit.cs
- PtsPage.cs
- PreProcessInputEventArgs.cs
- TextLineBreak.cs
- PreviewControlDesigner.cs
- ReaderOutput.cs
- IsolatedStorageFileStream.cs
- _TLSstream.cs
- BufferCache.cs
- WebPartConnectionsEventArgs.cs
- ConnectionsZone.cs
- RelationshipManager.cs
- SessionEndedEventArgs.cs
- BamlResourceDeserializer.cs
- AsyncCompletedEventArgs.cs
- HttpContext.cs
- ManageRequest.cs
- Group.cs
- WindowsSpinner.cs
- cache.cs
- TreeNodeBindingCollection.cs
- XmlILIndex.cs
- LoadRetryHandler.cs
- FrameworkElementFactoryMarkupObject.cs
- TreeChangeInfo.cs
- CookieHandler.cs
- ParagraphVisual.cs
- TiffBitmapDecoder.cs
- BinaryObjectInfo.cs
- SqlClientMetaDataCollectionNames.cs
- NullableDoubleSumAggregationOperator.cs
- PlatformCulture.cs
- DataServiceProcessingPipelineEventArgs.cs
- StateInitializationDesigner.cs
- Point3DAnimationUsingKeyFrames.cs
- ContainerParagraph.cs
- ServiceContractViewControl.Designer.cs
- DataGridViewRowCancelEventArgs.cs
- FormClosingEvent.cs
- DrawingGroup.cs
- SID.cs
- DateTimeStorage.cs
- TypeElement.cs
- LongValidator.cs
- TargetPerspective.cs
- DomNameTable.cs
- UInt16.cs
- ArcSegment.cs
- FigureParagraph.cs
- WindowsFormsEditorServiceHelper.cs
- HtmlTitle.cs
- PropagatorResult.cs
- Calendar.cs
- SchemaElement.cs
- ZipIOCentralDirectoryFileHeader.cs
- CompiledIdentityConstraint.cs
- MenuItemStyle.cs
- nulltextnavigator.cs
- Statements.cs
- EventLogLink.cs
- XsdDateTime.cs
- SendMessageChannelCache.cs
- HostingEnvironmentException.cs
- GridItemProviderWrapper.cs
- BuildManagerHost.cs
- IntegrationExceptionEventArgs.cs
- ProtocolsConfigurationHandler.cs
- AlphabeticalEnumConverter.cs
- SchemaTableOptionalColumn.cs
- BrushConverter.cs
- HtmlElementEventArgs.cs
- ConstraintManager.cs
- JoinSymbol.cs
- ObjectQueryExecutionPlan.cs
- MdiWindowListStrip.cs
- Rect3D.cs
- ObjectIDGenerator.cs
- ThreadSafeList.cs
- NotifyInputEventArgs.cs
- ValueExpressions.cs
- RichTextBoxAutomationPeer.cs
- Parser.cs
- HttpListenerRequestUriBuilder.cs
- WebBrowserUriTypeConverter.cs
- TextRangeProviderWrapper.cs