Code:
/ 4.0 / 4.0 / untmp / 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
- StrokeCollection2.cs
- GridView.cs
- SmtpReplyReader.cs
- StyleBamlRecordReader.cs
- DataGridTable.cs
- PageRequestManager.cs
- NativeMethods.cs
- BrowserCapabilitiesCodeGenerator.cs
- XmlSchema.cs
- MatchSingleFxEngineOpcode.cs
- UserControl.cs
- MasterPageCodeDomTreeGenerator.cs
- BaseAutoFormat.cs
- GenericAuthenticationEventArgs.cs
- EditorZoneAutoFormat.cs
- SoapEnumAttribute.cs
- ExceptionDetail.cs
- MouseEventArgs.cs
- CompilerState.cs
- TextBlock.cs
- MatchAllMessageFilter.cs
- KnownIds.cs
- XmlDictionary.cs
- WindowsSlider.cs
- FixedSOMPageElement.cs
- IIS7WorkerRequest.cs
- DragEvent.cs
- columnmapfactory.cs
- FontDialog.cs
- LineVisual.cs
- ProgressiveCrcCalculatingStream.cs
- TemplateComponentConnector.cs
- InheritanceAttribute.cs
- TargetParameterCountException.cs
- LoadGrammarCompletedEventArgs.cs
- StoryFragments.cs
- BehaviorDragDropEventArgs.cs
- linebase.cs
- base64Transforms.cs
- WebPartZoneBase.cs
- ServiceControllerDesigner.cs
- PageWrapper.cs
- DataConnectionHelper.cs
- SequentialOutput.cs
- ImageSource.cs
- HuffmanTree.cs
- SystemResources.cs
- PointCollection.cs
- InstanceLockException.cs
- ValidationSummary.cs
- RepeatInfo.cs
- ApplicationManager.cs
- AnnotationDocumentPaginator.cs
- PtsCache.cs
- DefaultTypeArgumentAttribute.cs
- COM2PropertyDescriptor.cs
- CompilationLock.cs
- SystemUdpStatistics.cs
- EncryptedReference.cs
- OutputCacheModule.cs
- X509Extension.cs
- MeasureItemEvent.cs
- XmlQualifiedNameTest.cs
- ResourceDefaultValueAttribute.cs
- BamlRecordWriter.cs
- DocumentReferenceCollection.cs
- Baml6ConstructorInfo.cs
- Publisher.cs
- ServiceNameCollection.cs
- MachineSettingsSection.cs
- CompiledIdentityConstraint.cs
- SubtreeProcessor.cs
- TextCompositionEventArgs.cs
- _NTAuthentication.cs
- Icon.cs
- DataServiceClientException.cs
- ColorConverter.cs
- PeerTransportCredentialType.cs
- ToolStripContentPanel.cs
- DataRowCollection.cs
- ScriptReferenceBase.cs
- DefaultValueMapping.cs
- ZipIOLocalFileDataDescriptor.cs
- NavigationHelper.cs
- RemoteHelper.cs
- CheckBoxDesigner.cs
- AdapterUtil.cs
- Merger.cs
- CommandHelper.cs
- BlurBitmapEffect.cs
- TreeNodeBindingCollection.cs
- ExpressionBuilderCollection.cs
- SubtreeProcessor.cs
- FtpCachePolicyElement.cs
- FormViewDeletedEventArgs.cs
- SoapAttributeAttribute.cs
- RemotingClientProxy.cs
- PropertyTab.cs
- XPathDocument.cs
- ObjectFactoryCodeDomTreeGenerator.cs