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
- QueryGeneratorBase.cs
- PenLineCapValidation.cs
- WindowsIdentity.cs
- CheckBoxList.cs
- Binding.cs
- BrushMappingModeValidation.cs
- CompilationSection.cs
- CompilationRelaxations.cs
- TextTrailingCharacterEllipsis.cs
- DataGridHelper.cs
- SymbolTable.cs
- ContractListAdapter.cs
- Utilities.cs
- DataGridColumn.cs
- ToolStripItemDataObject.cs
- SystemDiagnosticsSection.cs
- ArrayList.cs
- TargetConverter.cs
- TemplatedEditableDesignerRegion.cs
- EffectiveValueEntry.cs
- Pair.cs
- SID.cs
- BufferedStream.cs
- SiteMapPathDesigner.cs
- FieldTemplateFactory.cs
- TreeViewAutomationPeer.cs
- MenuItemBinding.cs
- ContentType.cs
- TimelineGroup.cs
- WebHttpSecurity.cs
- SafeIUnknown.cs
- ParamArrayAttribute.cs
- PageAction.cs
- Transform.cs
- GridViewCellAutomationPeer.cs
- VirtualizingStackPanel.cs
- HostUtils.cs
- DesignerCategoryAttribute.cs
- XPathAncestorIterator.cs
- FatalException.cs
- DataServiceEntityAttribute.cs
- ResourceReferenceExpression.cs
- RowUpdatedEventArgs.cs
- PasswordValidationException.cs
- ListViewContainer.cs
- ItemCheckedEvent.cs
- SqlDependency.cs
- ImportCatalogPart.cs
- ObjectIDGenerator.cs
- GenerateTemporaryTargetAssembly.cs
- EventItfInfo.cs
- BrowserDefinition.cs
- Sql8ExpressionRewriter.cs
- StubHelpers.cs
- TaskForm.cs
- LayoutEditorPart.cs
- VectorKeyFrameCollection.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- TextUtf8RawTextWriter.cs
- EdmPropertyAttribute.cs
- SafeFileMappingHandle.cs
- ButtonChrome.cs
- VBIdentifierName.cs
- CachedBitmap.cs
- ReadOnlyDataSource.cs
- CompilerParameters.cs
- UniqueSet.cs
- CaretElement.cs
- EditableRegion.cs
- MachinePropertyVariants.cs
- ResolveCompletedEventArgs.cs
- TextEvent.cs
- OutputCacheProfile.cs
- Object.cs
- PermissionRequestEvidence.cs
- PointCollectionConverter.cs
- VisualTarget.cs
- RepeatInfo.cs
- ClientFormsAuthenticationCredentials.cs
- BindingValueChangedEventArgs.cs
- CommandDevice.cs
- RowToParametersTransformer.cs
- CursorConverter.cs
- RadioButton.cs
- DataKey.cs
- ExceptionUtil.cs
- WorkflowPersistenceService.cs
- StreamInfo.cs
- Hex.cs
- NativeRecognizer.cs
- TheQuery.cs
- NameObjectCollectionBase.cs
- CompositeCollection.cs
- TextFragmentEngine.cs
- HtmlLiteralTextAdapter.cs
- PageBreakRecord.cs
- ProxyGenerator.cs
- sqlcontext.cs
- UserInitiatedNavigationPermission.cs
- SignerInfo.cs