Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / System / data / design / DesignColumn.cs / 1 / DesignColumn.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All Rights Reserved. // Information Contained Herein is Proprietary and Confidential. // //----------------------------------------------------------------------------- namespace System.Data.Design{ using System; using System.Data; using System.Data.Common; using System.ComponentModel; using System.Collections; using System.Collections.Specialized; using System.Diagnostics; using System.Windows.Forms; ////// internal class DesignColumn : DataSourceComponent, IDataSourceNamedObject, ICloneable { private const string NullValuePropertyName = "nullValue"; private const string NullValueThrow = "_throw"; private DataColumn dataColumn; private DesignTable designTable; private StringCollection namingPropNames = new StringCollection(); internal static string EXTPROPNAME_USER_COLUMNNAME = "Generator_UserColumnName"; internal static string EXTPROPNAME_GENERATOR_COLUMNPROPNAMEINTABLE = "Generator_ColumnPropNameInTable"; internal static string EXTPROPNAME_GENERATOR_COLUMNVARNAMEINTABLE = "Generator_ColumnVarNameInTable"; internal static string EXTPROPNAME_GENERATOR_COLUMNPROPNAMEINROW = "Generator_ColumnPropNameInRow"; private const string ROPNAME_EXPRESSION = "Expression"; public DesignColumn() { dataColumn = new DataColumn(); designTable = null; this.namingPropNames.Add("typedName"); } public DesignColumn(DataColumn dataColumn) { if (dataColumn == null) { throw new InternalException(VSDExceptions.DataSource.DESIGN_COLUMN_NEEDS_DATA_COLUMN_MSG, VSDExceptions.DataSource.DESIGN_COLUMN_NEEDS_DATA_COLUMN_CODE); } this.dataColumn = dataColumn; this.namingPropNames.Add("typedName"); } [ RefreshProperties(RefreshProperties.All), DefaultValue(false) ] public bool AutoIncrement { get { return dataColumn.AutoIncrement; } set { if (dataColumn.AutoIncrement != value) { Type oldDataType = DataType; dataColumn.AutoIncrement = value; // DataSet will automatically update DataType when AutoIncrement is changed, we have to hack it to support Undo if (DataType != oldDataType) { } } } } public DataColumn DataColumn { get { return dataColumn; } } [ RefreshProperties(RefreshProperties.All), DefaultValue(typeof(System.String)) ] public Type DataType { get { return dataColumn.DataType; } set { if (dataColumn.DataType != value) { bool oldAutoIncrement = AutoIncrement; dataColumn.DataType = value; OnDataTypeChanged(); // DataSet will automatically update AutoIncrement when DataType is changed, we have to hack it to support Undo if (AutoIncrement != oldAutoIncrement) { } } } } internal DesignTable DesignTable { get { return designTable; } set { designTable = value; } } ////// Wrap it to add cascading "ReadOnly" undo step /// Refer to DataColumn.cs for set_Expression's behaviour /// ///[ RefreshProperties(RefreshProperties.All), DefaultValue("") ] public string Expression { get { return this.dataColumn.Expression; } set { bool oldReadOnly = this.dataColumn.ReadOnly; this.dataColumn.Expression = value; } } /// /// return the object supports external properties /// protected override object ExternalPropertyHost { get { return dataColumn; } } ////// See VS Whidbey Bug 149549. DataColumn does not allow you to increase the MaxLength /// Workaround it in design time by set it to -1 first /// ///[ DefaultValue(-1) ] public int MaxLength { get { return dataColumn.MaxLength; } set { if (MaxLength >= 0 && value > MaxLength ) { dataColumn.MaxLength = -1; } dataColumn.MaxLength = value; } } [ DefaultValue(""), MergableProperty(false) ] public string Name { get { return dataColumn.ColumnName; } set { string oldName = dataColumn.ColumnName; if (!StringUtil.EqualValue(value, oldName)) { if (this.CollectionParent != null) { this.CollectionParent.ValidateUniqueName(this, value); } dataColumn.ColumnName = value; if (oldName.Length > 0 && value.Length > 0) { // update ColumnMapping... DesignTable designTable = DesignTable; if (designTable != null) { designTable.UpdateColumnMappingDataSetColumnName(oldName, value); } } } } } [ DefaultValue(NullValueThrow) ] public string NullValue { get { if (dataColumn.ExtendedProperties.Contains(NullValuePropertyName)) { return dataColumn.ExtendedProperties[NullValuePropertyName] as string; } return NullValueThrow; } set { if (value != NullValue) { dataColumn.ExtendedProperties[NullValuePropertyName] = value; } } } [Browsable(false)] public string PublicTypeName { get { return "Column"; } } [ DefaultValue("") ] public string Source { get { if (this.DesignTable != null && this.DesignTable.Mappings != null) { int index = this.DesignTable.Mappings.IndexOfDataSetColumn(this.DataColumn.ColumnName); DataColumnMapping columnMapping = null; if (index >= 0){ columnMapping = this.DesignTable.Mappings.GetByDataSetColumn(this.DataColumn.ColumnName); } if (columnMapping != null) { return columnMapping.SourceColumn; } } return string.Empty; } set { if (this.DesignTable != null) { this.DesignTable.UpdateColumnMappingSourceColumnName(this.DataColumn.ColumnName, value); } } } [ DefaultValue(false) ] public bool Unique { get { return dataColumn.Unique; } set { } } public object Clone() { DataColumn dc = DataDesignUtil.CloneColumn(this.dataColumn); DesignColumn clone = new DesignColumn(dc); return clone; } /// /// Indicate the column is part of a constraint /// ///internal bool IsKeyColumn() { if (DesignTable == null) { return false; } ArrayList list = DesignTable.GetRelatedDataConstraints(new DesignColumn[]{this}, true/*uniqueOnly, exclude*/); return (list != null && list.Count > 0); } /// /// When DataType was changed we need update NullValue /// private void OnDataTypeChanged() { } public override string ToString() { return this.PublicTypeName + " " + this.Name; } internal string UserColumnName { get { return this.dataColumn.ExtendedProperties[EXTPROPNAME_USER_COLUMNNAME] as string; } set { this.dataColumn.ExtendedProperties[EXTPROPNAME_USER_COLUMNNAME] = value; } } internal string GeneratorColumnPropNameInTable { get { return this.dataColumn.ExtendedProperties[EXTPROPNAME_GENERATOR_COLUMNPROPNAMEINTABLE] as string; } set { this.dataColumn.ExtendedProperties[EXTPROPNAME_GENERATOR_COLUMNPROPNAMEINTABLE] = value; } } internal string GeneratorColumnVarNameInTable { get { return this.dataColumn.ExtendedProperties[EXTPROPNAME_GENERATOR_COLUMNVARNAMEINTABLE] as string; } set { this.dataColumn.ExtendedProperties[EXTPROPNAME_GENERATOR_COLUMNVARNAMEINTABLE] = value; } } internal string GeneratorColumnPropNameInRow { get { return this.dataColumn.ExtendedProperties[EXTPROPNAME_GENERATOR_COLUMNPROPNAMEINROW] as string; } set { this.dataColumn.ExtendedProperties[EXTPROPNAME_GENERATOR_COLUMNPROPNAMEINROW] = value; } } internal override StringCollection NamingPropertyNames { get { return namingPropNames; } } // IDataSourceRenamableObject implementation [Browsable(false)] public override string GeneratorName { get { return GeneratorColumnPropNameInRow; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- QilSortKey.cs
- PackageRelationshipSelector.cs
- RowBinding.cs
- TypeContext.cs
- SqlBuffer.cs
- _ListenerAsyncResult.cs
- DateTimeParse.cs
- NavigationPropertySingletonExpression.cs
- NoResizeHandleGlyph.cs
- StylusSystemGestureEventArgs.cs
- AssemblyAttributes.cs
- ObjectViewQueryResultData.cs
- Registry.cs
- InputMethodStateChangeEventArgs.cs
- DisplayMemberTemplateSelector.cs
- FixedSOMPageElement.cs
- TypedTableBase.cs
- DataGridColumnHeader.cs
- DataPager.cs
- AlternateView.cs
- webbrowsersite.cs
- CompilerCollection.cs
- WsdlImporter.cs
- HtmlEncodedRawTextWriter.cs
- IdentityHolder.cs
- Util.cs
- DecoderBestFitFallback.cs
- JsonFormatWriterGenerator.cs
- SessionParameter.cs
- MailWriter.cs
- UpdateTranslator.cs
- WebPartConnectVerb.cs
- TreeViewDesigner.cs
- FilterRepeater.cs
- PageAsyncTask.cs
- SqlProviderManifest.cs
- HiddenFieldPageStatePersister.cs
- ObjectDataSource.cs
- XmlBinaryReader.cs
- AttachedPropertyMethodSelector.cs
- ToolboxComponentsCreatedEventArgs.cs
- SystemNetworkInterface.cs
- CodeIterationStatement.cs
- ErrorHandler.cs
- TimeSpanValidator.cs
- TrackBarRenderer.cs
- FileUtil.cs
- NoPersistScope.cs
- XmlParserContext.cs
- VectorValueSerializer.cs
- TableLayoutPanelCodeDomSerializer.cs
- loginstatus.cs
- CapabilitiesSection.cs
- DATA_BLOB.cs
- GridViewCellAutomationPeer.cs
- Point3DAnimationUsingKeyFrames.cs
- SharedPersonalizationStateInfo.cs
- XPathNodePointer.cs
- CodeVariableDeclarationStatement.cs
- WebScriptMetadataMessage.cs
- CircleEase.cs
- GC.cs
- DataTemplateSelector.cs
- CodeCompiler.cs
- ThicknessAnimationUsingKeyFrames.cs
- DataGridViewColumnCollection.cs
- XNodeValidator.cs
- SafeRightsManagementQueryHandle.cs
- MemoryRecordBuffer.cs
- EdmSchemaAttribute.cs
- VisualBrush.cs
- ItemContainerGenerator.cs
- PerspectiveCamera.cs
- XPathBinder.cs
- IListConverters.cs
- TypeDescriptor.cs
- FloatUtil.cs
- DecimalAnimationUsingKeyFrames.cs
- VScrollBar.cs
- FunctionDescription.cs
- MemberExpression.cs
- SchemaImporterExtension.cs
- AdjustableArrowCap.cs
- ArcSegment.cs
- XamlTypeMapper.cs
- DetailsViewInsertEventArgs.cs
- QuinticEase.cs
- ExclusiveHandle.cs
- XmlCustomFormatter.cs
- streamingZipPartStream.cs
- SecurityContext.cs
- _OSSOCK.cs
- DataColumnCollection.cs
- XmlSchemaNotation.cs
- RoutedEventArgs.cs
- ServiceInfoCollection.cs
- RawStylusInputCustomData.cs
- ConversionContext.cs
- SizeIndependentAnimationStorage.cs
- AnnotationResourceCollection.cs