Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Data / System / Data / DataViewManager.cs / 1 / DataViewManager.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.ComponentModel; using System.Collections; using System.IO; using System.Text; using System.Xml; [ Designer("Microsoft.VSDesigner.Data.VS.DataViewManagerDesigner, " + AssemblyRef.MicrosoftVSDesigner) ] #if WINFSInternalOnly internal #else public #endif class DataViewManager : MarshalByValueComponent, IBindingList, System.ComponentModel.ITypedList { private DataViewSettingCollection dataViewSettingsCollection; private DataSet dataSet; private DataViewManagerListItemTypeDescriptor item; private bool locked; internal int nViews = 0; private System.ComponentModel.ListChangedEventHandler onListChanged; private static NotSupportedException NotSupported = new NotSupportedException(); public DataViewManager() : this(null, false) {} public DataViewManager(DataSet dataSet) : this(dataSet, false) {} internal DataViewManager(DataSet dataSet, bool locked) { GC.SuppressFinalize(this); this.dataSet = dataSet; if (this.dataSet != null) { this.dataSet.Tables.CollectionChanged += new CollectionChangeEventHandler(TableCollectionChanged); this.dataSet.Relations.CollectionChanged += new CollectionChangeEventHandler(RelationCollectionChanged); } this.locked = locked; this.item = new DataViewManagerListItemTypeDescriptor(this); this.dataViewSettingsCollection = new DataViewSettingCollection(this); } [ DefaultValue(null), ResDescriptionAttribute(Res.DataViewManagerDataSetDescr) ] public DataSet DataSet { get { return dataSet; } set { if (value == null) throw ExceptionBuilder.SetFailed("DataSet to null"); if (locked) throw ExceptionBuilder.SetDataSetFailed(); if (dataSet != null) { if (nViews > 0) throw ExceptionBuilder.CanNotSetDataSet(); this.dataSet.Tables.CollectionChanged -= new CollectionChangeEventHandler(TableCollectionChanged); this.dataSet.Relations.CollectionChanged -= new CollectionChangeEventHandler(RelationCollectionChanged); } this.dataSet = value; this.dataSet.Tables.CollectionChanged += new CollectionChangeEventHandler(TableCollectionChanged); this.dataSet.Relations.CollectionChanged += new CollectionChangeEventHandler(RelationCollectionChanged); this.dataViewSettingsCollection = new DataViewSettingCollection(this); item.Reset(); } } [ DesignerSerializationVisibility(DesignerSerializationVisibility.Content), ResDescriptionAttribute(Res.DataViewManagerTableSettingsDescr) ] public DataViewSettingCollection DataViewSettings { get { return dataViewSettingsCollection; } } public string DataViewSettingCollectionString { get { if (dataSet == null) return ""; StringBuilder builder = new StringBuilder(); builder.Append(""); foreach (DataTable dt in dataSet.Tables) { DataViewSetting ds = dataViewSettingsCollection[dt]; builder.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, "<{0} Sort=\"{1}\" RowFilter=\"{2}\" RowStateFilter=\"{3}\"/>", dt.EncodedTableName, ds.Sort, ds.RowFilter, ds.RowStateFilter); } builder.Append(" "); return builder.ToString(); } set { if (value == null || value.Length == 0) return; XmlTextReader r = new XmlTextReader(new StringReader(value)); r.WhitespaceHandling = WhitespaceHandling.None; r.Read(); if (r.Name != "DataViewSettingCollectionString") throw ExceptionBuilder.SetFailed("DataViewSettingCollectionString"); while (r.Read()) { if (r.NodeType != XmlNodeType.Element) continue; string table = XmlConvert.DecodeName(r.LocalName); if (r.MoveToAttribute("Sort")) dataViewSettingsCollection[table].Sort = r.Value; if (r.MoveToAttribute("RowFilter")) dataViewSettingsCollection[table].RowFilter = r.Value; if (r.MoveToAttribute("RowStateFilter")) dataViewSettingsCollection[table].RowStateFilter = (DataViewRowState)Enum.Parse(typeof(DataViewRowState),r.Value); } } } IEnumerator IEnumerable.GetEnumerator() { DataViewManagerListItemTypeDescriptor[] items = new DataViewManagerListItemTypeDescriptor[1]; ((ICollection)this).CopyTo(items, 0); return items.GetEnumerator(); } int ICollection.Count { get { return 1; } } object ICollection.SyncRoot { get { return this; } } bool ICollection.IsSynchronized { get { return false; } } bool IList.IsReadOnly { get { return true; } } bool IList.IsFixedSize { get { return true; } } void ICollection.CopyTo(Array array, int index) { array.SetValue((object)(new DataViewManagerListItemTypeDescriptor(this)), index); } object IList.this[int index] { get { return item; } set { throw ExceptionBuilder.CannotModifyCollection(); } } int IList.Add(object value) { throw ExceptionBuilder.CannotModifyCollection(); } void IList.Clear() { throw ExceptionBuilder.CannotModifyCollection(); } bool IList.Contains(object value) { return(value == item); } int IList.IndexOf(object value) { return(value == item) ? 1 : -1; } void IList.Insert(int index, object value) { throw ExceptionBuilder.CannotModifyCollection(); } void IList.Remove(object value) { throw ExceptionBuilder.CannotModifyCollection(); } void IList.RemoveAt(int index) { throw ExceptionBuilder.CannotModifyCollection(); } // ------------- IBindingList: --------------------------- bool IBindingList.AllowNew { get { return false; } } object IBindingList.AddNew() { throw NotSupported; } bool IBindingList.AllowEdit { get { return false; } } bool IBindingList.AllowRemove { get { return false; } } bool IBindingList.SupportsChangeNotification { get { return true; } } bool IBindingList.SupportsSearching { get { return false; } } bool IBindingList.SupportsSorting { get { return false; } } bool IBindingList.IsSorted { get { throw NotSupported; } } PropertyDescriptor IBindingList.SortProperty { get { throw NotSupported; } } ListSortDirection IBindingList.SortDirection { get { throw NotSupported; } } public event System.ComponentModel.ListChangedEventHandler ListChanged { add { onListChanged += value; } remove { onListChanged -= value; } } void IBindingList.AddIndex(PropertyDescriptor property) { // no operation } void IBindingList.ApplySort(PropertyDescriptor property, ListSortDirection direction) { throw NotSupported; } int IBindingList.Find(PropertyDescriptor property, object key) { throw NotSupported; } void IBindingList.RemoveIndex(PropertyDescriptor property) { // no operation } void IBindingList.RemoveSort() { throw NotSupported; } /* string IBindingList.GetListName() { return ((System.Data.ITypedList)this).GetListName(null); } string IBindingList.GetListName(PropertyDescriptor[] listAccessors) { return ((System.Data.ITypedList)this).GetListName(listAccessors); } */ // [....]: GetListName and GetItemProperties almost the same in DataView and DataViewManager string System.ComponentModel.ITypedList.GetListName(PropertyDescriptor[] listAccessors) { DataSet dataSet = DataSet; if (dataSet == null) throw ExceptionBuilder.CanNotUseDataViewManager(); if (listAccessors == null || listAccessors.Length == 0) { return dataSet.DataSetName; } else { DataTable table = dataSet.FindTable(null, listAccessors, 0); if (table != null) { return table.TableName; } } return String.Empty; } PropertyDescriptorCollection System.ComponentModel.ITypedList.GetItemProperties(PropertyDescriptor[] listAccessors) { DataSet dataSet = DataSet; if (dataSet == null) throw ExceptionBuilder.CanNotUseDataViewManager(); if (listAccessors == null || listAccessors.Length == 0) { return((ICustomTypeDescriptor)(new DataViewManagerListItemTypeDescriptor(this))).GetProperties(); } else { DataTable table = dataSet.FindTable(null, listAccessors, 0); if (table != null) { return table.GetPropertyDescriptorCollection(null); } } return new PropertyDescriptorCollection(null); } public DataView CreateDataView(DataTable table) { if (dataSet == null) throw ExceptionBuilder.CanNotUseDataViewManager(); DataView dataView = new DataView(table); dataView.SetDataViewManager(this); return dataView; } protected virtual void OnListChanged(ListChangedEventArgs e) { try { if (onListChanged != null) { onListChanged(this, e); } } catch (Exception f) { // if (!Common.ADP.IsCatchableExceptionType(f)) { throw; } ExceptionBuilder.TraceExceptionWithoutRethrow(f); // ignore the exception } } protected virtual void TableCollectionChanged(object sender, CollectionChangeEventArgs e) { PropertyDescriptor NullProp = null; OnListChanged( e.Action == CollectionChangeAction.Add ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorAdded, new DataTablePropertyDescriptor((System.Data.DataTable)e.Element)) : e.Action == CollectionChangeAction.Refresh ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorChanged, NullProp) : e.Action == CollectionChangeAction.Remove ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorDeleted, new DataTablePropertyDescriptor((System.Data.DataTable)e.Element)) : /*default*/ null ); } protected virtual void RelationCollectionChanged(object sender, CollectionChangeEventArgs e) { DataRelationPropertyDescriptor NullProp = null; OnListChanged( e.Action == CollectionChangeAction.Add ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorAdded, new DataRelationPropertyDescriptor((System.Data.DataRelation)e.Element)) : e.Action == CollectionChangeAction.Refresh ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorChanged, NullProp): e.Action == CollectionChangeAction.Remove ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorDeleted, new DataRelationPropertyDescriptor((System.Data.DataRelation)e.Element)) : /*default*/ null ); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.ComponentModel; using System.Collections; using System.IO; using System.Text; using System.Xml; [ Designer("Microsoft.VSDesigner.Data.VS.DataViewManagerDesigner, " + AssemblyRef.MicrosoftVSDesigner) ] #if WINFSInternalOnly internal #else public #endif class DataViewManager : MarshalByValueComponent, IBindingList, System.ComponentModel.ITypedList { private DataViewSettingCollection dataViewSettingsCollection; private DataSet dataSet; private DataViewManagerListItemTypeDescriptor item; private bool locked; internal int nViews = 0; private System.ComponentModel.ListChangedEventHandler onListChanged; private static NotSupportedException NotSupported = new NotSupportedException(); public DataViewManager() : this(null, false) {} public DataViewManager(DataSet dataSet) : this(dataSet, false) {} internal DataViewManager(DataSet dataSet, bool locked) { GC.SuppressFinalize(this); this.dataSet = dataSet; if (this.dataSet != null) { this.dataSet.Tables.CollectionChanged += new CollectionChangeEventHandler(TableCollectionChanged); this.dataSet.Relations.CollectionChanged += new CollectionChangeEventHandler(RelationCollectionChanged); } this.locked = locked; this.item = new DataViewManagerListItemTypeDescriptor(this); this.dataViewSettingsCollection = new DataViewSettingCollection(this); } [ DefaultValue(null), ResDescriptionAttribute(Res.DataViewManagerDataSetDescr) ] public DataSet DataSet { get { return dataSet; } set { if (value == null) throw ExceptionBuilder.SetFailed("DataSet to null"); if (locked) throw ExceptionBuilder.SetDataSetFailed(); if (dataSet != null) { if (nViews > 0) throw ExceptionBuilder.CanNotSetDataSet(); this.dataSet.Tables.CollectionChanged -= new CollectionChangeEventHandler(TableCollectionChanged); this.dataSet.Relations.CollectionChanged -= new CollectionChangeEventHandler(RelationCollectionChanged); } this.dataSet = value; this.dataSet.Tables.CollectionChanged += new CollectionChangeEventHandler(TableCollectionChanged); this.dataSet.Relations.CollectionChanged += new CollectionChangeEventHandler(RelationCollectionChanged); this.dataViewSettingsCollection = new DataViewSettingCollection(this); item.Reset(); } } [ DesignerSerializationVisibility(DesignerSerializationVisibility.Content), ResDescriptionAttribute(Res.DataViewManagerTableSettingsDescr) ] public DataViewSettingCollection DataViewSettings { get { return dataViewSettingsCollection; } } public string DataViewSettingCollectionString { get { if (dataSet == null) return ""; StringBuilder builder = new StringBuilder(); builder.Append(""); foreach (DataTable dt in dataSet.Tables) { DataViewSetting ds = dataViewSettingsCollection[dt]; builder.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, "<{0} Sort=\"{1}\" RowFilter=\"{2}\" RowStateFilter=\"{3}\"/>", dt.EncodedTableName, ds.Sort, ds.RowFilter, ds.RowStateFilter); } builder.Append(" "); return builder.ToString(); } set { if (value == null || value.Length == 0) return; XmlTextReader r = new XmlTextReader(new StringReader(value)); r.WhitespaceHandling = WhitespaceHandling.None; r.Read(); if (r.Name != "DataViewSettingCollectionString") throw ExceptionBuilder.SetFailed("DataViewSettingCollectionString"); while (r.Read()) { if (r.NodeType != XmlNodeType.Element) continue; string table = XmlConvert.DecodeName(r.LocalName); if (r.MoveToAttribute("Sort")) dataViewSettingsCollection[table].Sort = r.Value; if (r.MoveToAttribute("RowFilter")) dataViewSettingsCollection[table].RowFilter = r.Value; if (r.MoveToAttribute("RowStateFilter")) dataViewSettingsCollection[table].RowStateFilter = (DataViewRowState)Enum.Parse(typeof(DataViewRowState),r.Value); } } } IEnumerator IEnumerable.GetEnumerator() { DataViewManagerListItemTypeDescriptor[] items = new DataViewManagerListItemTypeDescriptor[1]; ((ICollection)this).CopyTo(items, 0); return items.GetEnumerator(); } int ICollection.Count { get { return 1; } } object ICollection.SyncRoot { get { return this; } } bool ICollection.IsSynchronized { get { return false; } } bool IList.IsReadOnly { get { return true; } } bool IList.IsFixedSize { get { return true; } } void ICollection.CopyTo(Array array, int index) { array.SetValue((object)(new DataViewManagerListItemTypeDescriptor(this)), index); } object IList.this[int index] { get { return item; } set { throw ExceptionBuilder.CannotModifyCollection(); } } int IList.Add(object value) { throw ExceptionBuilder.CannotModifyCollection(); } void IList.Clear() { throw ExceptionBuilder.CannotModifyCollection(); } bool IList.Contains(object value) { return(value == item); } int IList.IndexOf(object value) { return(value == item) ? 1 : -1; } void IList.Insert(int index, object value) { throw ExceptionBuilder.CannotModifyCollection(); } void IList.Remove(object value) { throw ExceptionBuilder.CannotModifyCollection(); } void IList.RemoveAt(int index) { throw ExceptionBuilder.CannotModifyCollection(); } // ------------- IBindingList: --------------------------- bool IBindingList.AllowNew { get { return false; } } object IBindingList.AddNew() { throw NotSupported; } bool IBindingList.AllowEdit { get { return false; } } bool IBindingList.AllowRemove { get { return false; } } bool IBindingList.SupportsChangeNotification { get { return true; } } bool IBindingList.SupportsSearching { get { return false; } } bool IBindingList.SupportsSorting { get { return false; } } bool IBindingList.IsSorted { get { throw NotSupported; } } PropertyDescriptor IBindingList.SortProperty { get { throw NotSupported; } } ListSortDirection IBindingList.SortDirection { get { throw NotSupported; } } public event System.ComponentModel.ListChangedEventHandler ListChanged { add { onListChanged += value; } remove { onListChanged -= value; } } void IBindingList.AddIndex(PropertyDescriptor property) { // no operation } void IBindingList.ApplySort(PropertyDescriptor property, ListSortDirection direction) { throw NotSupported; } int IBindingList.Find(PropertyDescriptor property, object key) { throw NotSupported; } void IBindingList.RemoveIndex(PropertyDescriptor property) { // no operation } void IBindingList.RemoveSort() { throw NotSupported; } /* string IBindingList.GetListName() { return ((System.Data.ITypedList)this).GetListName(null); } string IBindingList.GetListName(PropertyDescriptor[] listAccessors) { return ((System.Data.ITypedList)this).GetListName(listAccessors); } */ // [....]: GetListName and GetItemProperties almost the same in DataView and DataViewManager string System.ComponentModel.ITypedList.GetListName(PropertyDescriptor[] listAccessors) { DataSet dataSet = DataSet; if (dataSet == null) throw ExceptionBuilder.CanNotUseDataViewManager(); if (listAccessors == null || listAccessors.Length == 0) { return dataSet.DataSetName; } else { DataTable table = dataSet.FindTable(null, listAccessors, 0); if (table != null) { return table.TableName; } } return String.Empty; } PropertyDescriptorCollection System.ComponentModel.ITypedList.GetItemProperties(PropertyDescriptor[] listAccessors) { DataSet dataSet = DataSet; if (dataSet == null) throw ExceptionBuilder.CanNotUseDataViewManager(); if (listAccessors == null || listAccessors.Length == 0) { return((ICustomTypeDescriptor)(new DataViewManagerListItemTypeDescriptor(this))).GetProperties(); } else { DataTable table = dataSet.FindTable(null, listAccessors, 0); if (table != null) { return table.GetPropertyDescriptorCollection(null); } } return new PropertyDescriptorCollection(null); } public DataView CreateDataView(DataTable table) { if (dataSet == null) throw ExceptionBuilder.CanNotUseDataViewManager(); DataView dataView = new DataView(table); dataView.SetDataViewManager(this); return dataView; } protected virtual void OnListChanged(ListChangedEventArgs e) { try { if (onListChanged != null) { onListChanged(this, e); } } catch (Exception f) { // if (!Common.ADP.IsCatchableExceptionType(f)) { throw; } ExceptionBuilder.TraceExceptionWithoutRethrow(f); // ignore the exception } } protected virtual void TableCollectionChanged(object sender, CollectionChangeEventArgs e) { PropertyDescriptor NullProp = null; OnListChanged( e.Action == CollectionChangeAction.Add ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorAdded, new DataTablePropertyDescriptor((System.Data.DataTable)e.Element)) : e.Action == CollectionChangeAction.Refresh ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorChanged, NullProp) : e.Action == CollectionChangeAction.Remove ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorDeleted, new DataTablePropertyDescriptor((System.Data.DataTable)e.Element)) : /*default*/ null ); } protected virtual void RelationCollectionChanged(object sender, CollectionChangeEventArgs e) { DataRelationPropertyDescriptor NullProp = null; OnListChanged( e.Action == CollectionChangeAction.Add ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorAdded, new DataRelationPropertyDescriptor((System.Data.DataRelation)e.Element)) : e.Action == CollectionChangeAction.Refresh ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorChanged, NullProp): e.Action == CollectionChangeAction.Remove ? new ListChangedEventArgs(ListChangedType.PropertyDescriptorDeleted, new DataRelationPropertyDescriptor((System.Data.DataRelation)e.Element)) : /*default*/ null ); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CompModHelpers.cs
- Queue.cs
- ProcessStartInfo.cs
- DocumentXPathNavigator.cs
- EventMappingSettings.cs
- QilLoop.cs
- shaperfactory.cs
- WebPartDisplayModeEventArgs.cs
- TableColumn.cs
- ValidationErrorEventArgs.cs
- TaskHelper.cs
- ObjectIDGenerator.cs
- SafeRegistryHandle.cs
- TypeConstant.cs
- XmlAttributeAttribute.cs
- UnsafeNativeMethods.cs
- DrawListViewColumnHeaderEventArgs.cs
- CompModHelpers.cs
- IItemProperties.cs
- WebBrowserNavigatingEventHandler.cs
- BitmapEffectGroup.cs
- DelegateArgumentReference.cs
- XamlTypeMapper.cs
- Rijndael.cs
- ImageBrush.cs
- ActivityExecutionFilter.cs
- SurrogateDataContract.cs
- SafeRightsManagementHandle.cs
- WebPartConnectVerb.cs
- SqlNotificationRequest.cs
- QEncodedStream.cs
- TraceXPathNavigator.cs
- COMException.cs
- Vector3DCollectionValueSerializer.cs
- Membership.cs
- HtmlHistory.cs
- ClipboardProcessor.cs
- WindowsFormsDesignerOptionService.cs
- XmlRootAttribute.cs
- UInt32Converter.cs
- elementinformation.cs
- TextParagraphView.cs
- ErrorFormatterPage.cs
- Configuration.cs
- TPLETWProvider.cs
- WindowsListViewItemCheckBox.cs
- Helper.cs
- DataGridViewColumnCollection.cs
- SystemFonts.cs
- SecurityCookieModeValidator.cs
- SqlRowUpdatingEvent.cs
- SortKey.cs
- SynchronizationContext.cs
- ListViewHitTestInfo.cs
- ColumnResizeUndoUnit.cs
- LayoutEditorPart.cs
- ResourceIDHelper.cs
- XmlAtomicValue.cs
- Pipe.cs
- SqlBuffer.cs
- PrintPreviewControl.cs
- PhonemeEventArgs.cs
- JsonClassDataContract.cs
- SmiEventSink_DeferedProcessing.cs
- WpfXamlLoader.cs
- PropertyChangedEventManager.cs
- GenericWebPart.cs
- TokenizerHelper.cs
- Scanner.cs
- UntrustedRecipientException.cs
- CorrelationResolver.cs
- MyContact.cs
- XamlToRtfWriter.cs
- CompressedStack.cs
- UnknownBitmapDecoder.cs
- RegularExpressionValidator.cs
- EntryPointNotFoundException.cs
- ResizeGrip.cs
- StreamDocument.cs
- HuffCodec.cs
- SyndicationItemFormatter.cs
- TypedColumnHandler.cs
- XLinq.cs
- XmlSchemaValidator.cs
- DateTimeAutomationPeer.cs
- TaiwanCalendar.cs
- InsufficientExecutionStackException.cs
- RelationshipConstraintValidator.cs
- AliasGenerator.cs
- MessageBodyMemberAttribute.cs
- ApplicationGesture.cs
- loginstatus.cs
- OleDbCommand.cs
- EventLogLink.cs
- ProviderConnectionPointCollection.cs
- QueryableDataSource.cs
- ScrollData.cs
- FragmentNavigationEventArgs.cs
- ReferentialConstraint.cs
- Animatable.cs