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
- SafeCryptoHandles.cs
- OutputCacheSection.cs
- LogPolicy.cs
- WindowsFont.cs
- EndCreateSecurityTokenRequest.cs
- GestureRecognitionResult.cs
- Path.cs
- EditingMode.cs
- PhoneCall.cs
- HtmlInputButton.cs
- UserValidatedEventArgs.cs
- Profiler.cs
- ScrollableControl.cs
- SqlBuffer.cs
- TextOutput.cs
- SmtpDigestAuthenticationModule.cs
- TimersDescriptionAttribute.cs
- RuleConditionDialog.Designer.cs
- HttpCookie.cs
- ReadOnlyDataSourceView.cs
- TextContainerHelper.cs
- XmlSchemaImport.cs
- SelectManyQueryOperator.cs
- ConfigurationLocationCollection.cs
- SafeRightsManagementEnvironmentHandle.cs
- DefaultCommandConverter.cs
- ToolStripContentPanelDesigner.cs
- CharacterHit.cs
- ManagementNamedValueCollection.cs
- BuilderPropertyEntry.cs
- ModifiableIteratorCollection.cs
- Matrix.cs
- CodeBlockBuilder.cs
- CheckBoxFlatAdapter.cs
- CharStorage.cs
- CompareValidator.cs
- NamedPermissionSet.cs
- XsltArgumentList.cs
- GradientStopCollection.cs
- WebHttpBindingElement.cs
- ObjectTag.cs
- UInt16Converter.cs
- Char.cs
- Region.cs
- PointAnimationUsingKeyFrames.cs
- ModelItemCollectionImpl.cs
- MsmqIntegrationProcessProtocolHandler.cs
- _ListenerRequestStream.cs
- TransactionChannelListener.cs
- Message.cs
- SerializationAttributes.cs
- WsdlInspector.cs
- BoolExpressionVisitors.cs
- DataBindingCollection.cs
- DataPagerField.cs
- Wizard.cs
- SoapEnumAttribute.cs
- MenuRendererClassic.cs
- ScriptResourceHandler.cs
- ServicePointManager.cs
- HttpWebRequest.cs
- EncryptedType.cs
- EntityTypeEmitter.cs
- MailAddressCollection.cs
- TimersDescriptionAttribute.cs
- AssemblyCollection.cs
- SimpleTextLine.cs
- XmlSchemaNotation.cs
- BitStream.cs
- InputProcessorProfiles.cs
- SHA256Managed.cs
- PositiveTimeSpanValidator.cs
- RecognizerBase.cs
- WebControlsSection.cs
- UserControlDesigner.cs
- WorkflowServiceBehavior.cs
- CqlWriter.cs
- MetadataPropertyAttribute.cs
- RuleAttributes.cs
- SecurityState.cs
- DesignerAttribute.cs
- Floater.cs
- WeakReferenceKey.cs
- BamlLocalizableResourceKey.cs
- MailAddressCollection.cs
- SqlIdentifier.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- GZipStream.cs
- InputScopeManager.cs
- SchemaTableOptionalColumn.cs
- ChangeTracker.cs
- ActivityDesignerLayoutSerializers.cs
- MorphHelpers.cs
- InternalCache.cs
- ScriptingScriptResourceHandlerSection.cs
- VarInfo.cs
- DataGridLinkButton.cs
- DesignerForm.cs
- XmlTextEncoder.cs
- TextBoxAutomationPeer.cs