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
- DBAsyncResult.cs
- SchemaInfo.cs
- CommandField.cs
- BindingValueChangedEventArgs.cs
- PrinterUnitConvert.cs
- Debug.cs
- TextTreeRootTextBlock.cs
- Endpoint.cs
- ControlPaint.cs
- Utility.cs
- NCryptNative.cs
- LinearQuaternionKeyFrame.cs
- ErrorStyle.cs
- HierarchicalDataBoundControlAdapter.cs
- LOSFormatter.cs
- TempFiles.cs
- ApplicationServiceHelper.cs
- ButtonBase.cs
- WebPartMinimizeVerb.cs
- NonVisualControlAttribute.cs
- DataTemplateSelector.cs
- OleTxTransactionInfo.cs
- StylusButton.cs
- TransactionFlowElement.cs
- DecimalAnimationBase.cs
- StrongNamePublicKeyBlob.cs
- Emitter.cs
- ValueProviderWrapper.cs
- RuntimeCompatibilityAttribute.cs
- DesignerActionListCollection.cs
- Reference.cs
- InputProcessorProfiles.cs
- Ref.cs
- CanExpandCollapseAllConverter.cs
- WsatStrings.cs
- brushes.cs
- BooleanConverter.cs
- MailAddress.cs
- ConfigXmlCDataSection.cs
- XmlSchemaSubstitutionGroup.cs
- PageRanges.cs
- SqlNode.cs
- ResXBuildProvider.cs
- CompilationAssemblyInstallComponent.cs
- ObjectDataSourceFilteringEventArgs.cs
- CommonXSendMessage.cs
- WorkflowRuntime.cs
- CharacterBufferReference.cs
- mactripleDES.cs
- RoutingConfiguration.cs
- PropertyNames.cs
- UrlAuthorizationModule.cs
- ProgressBar.cs
- SizeIndependentAnimationStorage.cs
- LinkedList.cs
- TextTreeRootNode.cs
- XsdDateTime.cs
- Lease.cs
- DataServiceResponse.cs
- PolyQuadraticBezierSegment.cs
- PasswordRecovery.cs
- CallContext.cs
- InkCanvasSelection.cs
- PieceNameHelper.cs
- TripleDESCryptoServiceProvider.cs
- RegexCompiler.cs
- AppSecurityManager.cs
- OleDbParameter.cs
- TdsParserHelperClasses.cs
- StateItem.cs
- HashCodeCombiner.cs
- SqlBuffer.cs
- PageCanvasSize.cs
- Assert.cs
- CookieHandler.cs
- SQLDecimalStorage.cs
- EntityClassGenerator.cs
- CallTemplateAction.cs
- IdentifierService.cs
- CapabilitiesPattern.cs
- RightsManagementEncryptionTransform.cs
- XmlNamespaceMapping.cs
- OleDbError.cs
- OneOfConst.cs
- MetabaseServerConfig.cs
- WebEncodingValidatorAttribute.cs
- documentsequencetextpointer.cs
- FormViewUpdatedEventArgs.cs
- ForeignKeyConstraint.cs
- ColorConverter.cs
- TableLayout.cs
- DBCommand.cs
- CapacityStreamGeometryContext.cs
- ControlBindingsCollection.cs
- AttributeCollection.cs
- EntityDataSourceSelectingEventArgs.cs
- NamespaceInfo.cs
- CodeGotoStatement.cs
- EntityContainerEntitySetDefiningQuery.cs
- updateconfighost.cs