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
- DSASignatureFormatter.cs
- ContentOperations.cs
- Identifier.cs
- HtmlButton.cs
- FrameworkContextData.cs
- FileLogRecordHeader.cs
- SizeAnimationUsingKeyFrames.cs
- CounterNameConverter.cs
- ImmutableCommunicationTimeouts.cs
- FormatStringEditor.cs
- ArrangedElementCollection.cs
- EditingScopeUndoUnit.cs
- ObjRef.cs
- ProfilePropertySettingsCollection.cs
- ContainerParagraph.cs
- TransformGroup.cs
- MTConfigUtil.cs
- ListView.cs
- ThousandthOfEmRealDoubles.cs
- UTF32Encoding.cs
- OracleConnectionStringBuilder.cs
- QilSortKey.cs
- SqlRowUpdatedEvent.cs
- UnmanagedMemoryAccessor.cs
- MenuAdapter.cs
- CodeCommentStatementCollection.cs
- ContextProperty.cs
- RoleManagerSection.cs
- WebPartVerbsEventArgs.cs
- XPathScanner.cs
- XmlNamedNodeMap.cs
- PenCursorManager.cs
- QueryOptionExpression.cs
- X500Name.cs
- RSAPKCS1KeyExchangeFormatter.cs
- AppliedDeviceFiltersEditor.cs
- ProcessProtocolHandler.cs
- TextBlock.cs
- TogglePattern.cs
- ExtensibleClassFactory.cs
- EntityObject.cs
- TreeChangeInfo.cs
- TemplateControl.cs
- BinaryMessageEncoder.cs
- Registry.cs
- ResXDataNode.cs
- DrawingImage.cs
- __FastResourceComparer.cs
- Vector.cs
- ToolboxItemAttribute.cs
- DocumentViewerBaseAutomationPeer.cs
- ToolTip.cs
- CommonDialog.cs
- ButtonFieldBase.cs
- WebPartMinimizeVerb.cs
- GacUtil.cs
- Control.cs
- EndpointDiscoveryMetadataCD1.cs
- OpenCollectionAsyncResult.cs
- XsltArgumentList.cs
- ADMembershipProvider.cs
- CodeDOMUtility.cs
- ProviderIncompatibleException.cs
- RsaSecurityToken.cs
- XhtmlBasicTextViewAdapter.cs
- StreamUpdate.cs
- SrgsItemList.cs
- EditorBrowsableAttribute.cs
- DesignerContextDescriptor.cs
- StringAttributeCollection.cs
- FormsAuthenticationConfiguration.cs
- AggregateNode.cs
- BinaryObjectWriter.cs
- ThousandthOfEmRealPoints.cs
- Route.cs
- DispatcherHooks.cs
- DbDataAdapter.cs
- CodeIndexerExpression.cs
- TableLayoutStyleCollection.cs
- PropertyToken.cs
- DateBoldEvent.cs
- GatewayDefinition.cs
- XmlByteStreamReader.cs
- WebPartUserCapability.cs
- OutputWindow.cs
- SingleConverter.cs
- WinHttpWebProxyFinder.cs
- WebPartsSection.cs
- __TransparentProxy.cs
- TypeForwardedFromAttribute.cs
- WebUtil.cs
- MessagePropertyVariants.cs
- BitmapDownload.cs
- SecurityException.cs
- CapabilitiesState.cs
- AnnotationResourceChangedEventArgs.cs
- BrowserCapabilitiesFactoryBase.cs
- _SslState.cs
- EnumValAlphaComparer.cs
- AnnotationComponentChooser.cs