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
- ClientTarget.cs
- LayoutInformation.cs
- MDIClient.cs
- TypeLibConverter.cs
- compensatingcollection.cs
- ImageSourceConverter.cs
- HttpPostServerProtocol.cs
- ScalarConstant.cs
- PrivilegedConfigurationManager.cs
- GPRECT.cs
- EntityDataSourceDesignerHelper.cs
- BaseDataList.cs
- DrawingCollection.cs
- PanelStyle.cs
- OuterGlowBitmapEffect.cs
- ContravarianceAdapter.cs
- WriteTimeStream.cs
- SplitterCancelEvent.cs
- HWStack.cs
- InstancePersistenceException.cs
- EmbeddedObject.cs
- TypeConverterMarkupExtension.cs
- DLinqTableProvider.cs
- FormsAuthenticationEventArgs.cs
- DbConnectionHelper.cs
- DataKeyArray.cs
- WebHttpSecurityElement.cs
- counter.cs
- AuthenticationService.cs
- GrammarBuilderRuleRef.cs
- TableAdapterManagerNameHandler.cs
- HitTestParameters3D.cs
- SocketInformation.cs
- Publisher.cs
- ObjectMaterializedEventArgs.cs
- DataViewListener.cs
- GridViewRowEventArgs.cs
- BuildProviderCollection.cs
- LogAppendAsyncResult.cs
- QuotedStringFormatReader.cs
- TypeDescriptorContext.cs
- SettingsBindableAttribute.cs
- Certificate.cs
- TextCharacters.cs
- _emptywebproxy.cs
- XmlSchemaAttribute.cs
- LoginName.cs
- ToolBarPanel.cs
- ZipIOExtraFieldZip64Element.cs
- Manipulation.cs
- XmlSchemaSubstitutionGroup.cs
- QilTernary.cs
- FromRequest.cs
- StringAnimationUsingKeyFrames.cs
- _Events.cs
- Point4D.cs
- CircleEase.cs
- BuilderPropertyEntry.cs
- KeyValueInternalCollection.cs
- AutomationEventArgs.cs
- BasePattern.cs
- DataChangedEventManager.cs
- SetterBaseCollection.cs
- Int64Animation.cs
- PenThread.cs
- SqlFormatter.cs
- DocumentGridPage.cs
- MobileContainerDesigner.cs
- NodeLabelEditEvent.cs
- URI.cs
- Vector3dCollection.cs
- Polyline.cs
- XmlExpressionDumper.cs
- WS2007HttpBindingCollectionElement.cs
- ImageMapEventArgs.cs
- SettingsContext.cs
- unsafeIndexingFilterStream.cs
- DataPagerFieldItem.cs
- TagNameToTypeMapper.cs
- ProtocolsConfigurationEntry.cs
- Focus.cs
- FramingChannels.cs
- XmlAtomErrorReader.cs
- DiscoveryMessageSequenceCD1.cs
- DBConnectionString.cs
- AssemblyCacheEntry.cs
- control.ime.cs
- EditCommandColumn.cs
- DataColumnMappingCollection.cs
- Compiler.cs
- SynchronizationValidator.cs
- UxThemeWrapper.cs
- IChannel.cs
- Viewport2DVisual3D.cs
- TemplateControl.cs
- CodeBlockBuilder.cs
- ObjectItemConventionAssemblyLoader.cs
- ItemCollectionEditor.cs
- XmlnsPrefixAttribute.cs
- ParameterElement.cs