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
- PathTooLongException.cs
- ObjectIDGenerator.cs
- LineServicesRun.cs
- TimeStampChecker.cs
- TouchEventArgs.cs
- mediaclock.cs
- DelegateBodyWriter.cs
- EventRouteFactory.cs
- ProgressBarRenderer.cs
- ComponentResourceManager.cs
- DragCompletedEventArgs.cs
- RegisteredHiddenField.cs
- XmlSignatureProperties.cs
- TableItemStyle.cs
- SqlNodeAnnotations.cs
- WebSysDefaultValueAttribute.cs
- InvokeWebServiceDesigner.cs
- QilStrConcatenator.cs
- FileDialog_Vista_Interop.cs
- CompensateDesigner.cs
- _SingleItemRequestCache.cs
- HybridDictionary.cs
- HttpCapabilitiesBase.cs
- EntityViewGenerationAttribute.cs
- IsolatedStorageFileStream.cs
- NamespaceTable.cs
- RefExpr.cs
- BaseParagraph.cs
- ApplicationId.cs
- Unit.cs
- ExceptQueryOperator.cs
- TargetParameterCountException.cs
- MembershipUser.cs
- DecimalStorage.cs
- GeneralTransform3DCollection.cs
- MobileErrorInfo.cs
- RemoteDebugger.cs
- ValueTypeFixupInfo.cs
- Icon.cs
- HwndHost.cs
- ChannelSinkStacks.cs
- ToolStripDropDownClosingEventArgs.cs
- Compiler.cs
- DirtyTextRange.cs
- OutKeywords.cs
- BatchStream.cs
- ConstructorNeedsTagAttribute.cs
- HttpConfigurationContext.cs
- securitycriticaldataformultiplegetandset.cs
- WebPartEditorApplyVerb.cs
- DiscardableAttribute.cs
- NetWebProxyFinder.cs
- TextServicesManager.cs
- OdbcConnectionString.cs
- DetailsViewUpdatedEventArgs.cs
- BuilderPropertyEntry.cs
- SectionUpdates.cs
- ProxyElement.cs
- RequestCacheValidator.cs
- XmlSchemaObject.cs
- Fonts.cs
- AnnotationComponentChooser.cs
- ExpressionBuilderContext.cs
- CompositeScriptReference.cs
- ExternalFile.cs
- SqlRemoveConstantOrderBy.cs
- DefaultTextStore.cs
- ExpressionConverter.cs
- SqlException.cs
- WebPartDescription.cs
- LogReserveAndAppendState.cs
- AuthenticationSection.cs
- UniqueEventHelper.cs
- OutputCacheSettingsSection.cs
- StylusDownEventArgs.cs
- RequestQueue.cs
- ErrorLog.cs
- TableRow.cs
- ISAPIWorkerRequest.cs
- Schema.cs
- HitTestDrawingContextWalker.cs
- CompilerTypeWithParams.cs
- SignatureResourceHelper.cs
- DataGridTextBox.cs
- XamlBuildProvider.cs
- COM2IPerPropertyBrowsingHandler.cs
- querybuilder.cs
- RegistrationProxy.cs
- TemplateComponentConnector.cs
- BasicBrowserDialog.designer.cs
- OutputCacheSettings.cs
- Win32MouseDevice.cs
- DataGridPageChangedEventArgs.cs
- HttpCookiesSection.cs
- OracleBinary.cs
- LinqDataSource.cs
- Size.cs
- RelativeSource.cs
- UnaryNode.cs
- PageCopyCount.cs