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
- DBDataPermission.cs
- SqlBulkCopy.cs
- cache.cs
- SafeFileMapViewHandle.cs
- ChineseLunisolarCalendar.cs
- StringConverter.cs
- ZoneMembershipCondition.cs
- IPGlobalProperties.cs
- ObjectDataSourceDisposingEventArgs.cs
- TemplateNameScope.cs
- UnhandledExceptionEventArgs.cs
- Buffer.cs
- Context.cs
- PreparingEnlistment.cs
- VariableQuery.cs
- DataGrid.cs
- OperationCanceledException.cs
- CacheMemory.cs
- Subtree.cs
- ValidatorCollection.cs
- DataIdProcessor.cs
- TextElementCollectionHelper.cs
- DeviceContext.cs
- ClientRoleProvider.cs
- TokenBasedSet.cs
- CallbackValidatorAttribute.cs
- NavigationFailedEventArgs.cs
- Frame.cs
- SiteMapNode.cs
- SQLMembershipProvider.cs
- URIFormatException.cs
- WorkerRequest.cs
- SqlCacheDependencyDatabaseCollection.cs
- ToolStripSplitStackLayout.cs
- SignedXml.cs
- RootBuilder.cs
- ZoomingMessageFilter.cs
- InvokeSchedule.cs
- XmlMembersMapping.cs
- AssemblyBuilder.cs
- BooleanAnimationBase.cs
- HMACMD5.cs
- SqlReferenceCollection.cs
- CompositeTypefaceMetrics.cs
- WindowsStatic.cs
- AuthorizationRuleCollection.cs
- X509CertificateChain.cs
- StrongNameMembershipCondition.cs
- OutputCacheSection.cs
- WebPartConnectVerb.cs
- Material.cs
- Globals.cs
- ConfigurationSection.cs
- SynchronizedDisposablePool.cs
- SecurityCriticalDataForSet.cs
- SHA512.cs
- QilSortKey.cs
- SRGSCompiler.cs
- ObjectStateEntryDbDataRecord.cs
- Lock.cs
- RijndaelManaged.cs
- DisplayMemberTemplateSelector.cs
- XmlRawWriter.cs
- RuntimeEnvironment.cs
- DoubleAnimation.cs
- ListSortDescription.cs
- ToolStripMenuItemDesigner.cs
- FolderBrowserDialog.cs
- BitmapSizeOptions.cs
- XmlIlTypeHelper.cs
- DefaultPropertyAttribute.cs
- AnchoredBlock.cs
- ReadOnlyAttribute.cs
- ValidationRule.cs
- HostingEnvironmentWrapper.cs
- UndirectedGraph.cs
- QueryInterceptorAttribute.cs
- NewArray.cs
- __ConsoleStream.cs
- FilteredDataSetHelper.cs
- Vector3DCollectionConverter.cs
- ToolBarButton.cs
- BevelBitmapEffect.cs
- XamlToRtfParser.cs
- BaseCodeDomTreeGenerator.cs
- FixedDSBuilder.cs
- Paragraph.cs
- DataControlFieldsEditor.cs
- EastAsianLunisolarCalendar.cs
- StorageMappingItemCollection.cs
- SurrogateEncoder.cs
- HeaderCollection.cs
- MenuCommandService.cs
- ExecutionEngineException.cs
- CompressEmulationStream.cs
- CompositeFontFamily.cs
- PatternMatcher.cs
- IsolatedStorage.cs
- FlowDocumentPageViewerAutomationPeer.cs
- Path.cs