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
- OrderedEnumerableRowCollection.cs
- HandlerBase.cs
- TextBoxBase.cs
- XomlSerializationHelpers.cs
- SurrogateSelector.cs
- RelatedImageListAttribute.cs
- MarkerProperties.cs
- ComponentSerializationService.cs
- ResourcePermissionBaseEntry.cs
- FileLevelControlBuilderAttribute.cs
- DBDataPermissionAttribute.cs
- GenericParameterDataContract.cs
- IApplicationTrustManager.cs
- ItemMap.cs
- BridgeDataReader.cs
- BitArray.cs
- TableColumnCollectionInternal.cs
- AesCryptoServiceProvider.cs
- FileUtil.cs
- DocumentViewerConstants.cs
- CheckBoxPopupAdapter.cs
- NavigatingCancelEventArgs.cs
- DWriteFactory.cs
- DBSchemaRow.cs
- ScrollItemPattern.cs
- ColorComboBox.cs
- AssemblyBuilderData.cs
- FixedTextSelectionProcessor.cs
- PageThemeCodeDomTreeGenerator.cs
- ProxySimple.cs
- ProxyGenerationError.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- GiveFeedbackEventArgs.cs
- SymLanguageVendor.cs
- XsltOutput.cs
- SchemaImporter.cs
- XmlCountingReader.cs
- MaskedTextBoxDesigner.cs
- CodeArrayIndexerExpression.cs
- ExpressionLink.cs
- RemotingAttributes.cs
- DefaultClaimSet.cs
- IdnElement.cs
- IntSecurity.cs
- Brushes.cs
- RSACryptoServiceProvider.cs
- DefaultSection.cs
- PropertyItem.cs
- DataListCommandEventArgs.cs
- TdsParserSafeHandles.cs
- DurableInstance.cs
- ProviderIncompatibleException.cs
- EntityTypeBase.cs
- TCEAdapterGenerator.cs
- SystemIPGlobalProperties.cs
- EventHandlerService.cs
- Viewport3DAutomationPeer.cs
- SpotLight.cs
- PermissionToken.cs
- WizardPanel.cs
- XmlILStorageConverter.cs
- ClientBuildManager.cs
- _ShellExpression.cs
- UnmanagedMarshal.cs
- JpegBitmapDecoder.cs
- DataGrid.cs
- LinqDataSourceDeleteEventArgs.cs
- FileRecordSequence.cs
- Size3DValueSerializer.cs
- WebPartZone.cs
- HttpCacheVary.cs
- SoapCommonClasses.cs
- XmlSchemaCompilationSettings.cs
- ConstructorExpr.cs
- RangeBase.cs
- MD5Cng.cs
- BaseInfoTable.cs
- RelationshipFixer.cs
- AtomServiceDocumentSerializer.cs
- DataBoundControlParameterTarget.cs
- HttpResponse.cs
- StylusLogic.cs
- TextWriterTraceListener.cs
- Completion.cs
- Visual3D.cs
- SessionPageStateSection.cs
- OrderPreservingSpoolingTask.cs
- WebPartMenu.cs
- DataGridViewRowCollection.cs
- PerformanceCounterPermissionEntry.cs
- Form.cs
- HwndSubclass.cs
- StringComparer.cs
- IResourceProvider.cs
- WeakEventTable.cs
- GroupLabel.cs
- CqlParser.cs
- InputGestureCollection.cs
- AlphabeticalEnumConverter.cs
- EventEntry.cs