Code:
/ FX-1434 / FX-1434 / 1.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
- CreateUserWizardDesigner.cs
- NetworkInformationException.cs
- LookupBindingPropertiesAttribute.cs
- ParameterBuilder.cs
- MimeWriter.cs
- DateTimeValueSerializerContext.cs
- ComPlusTraceRecord.cs
- EntityDataSourceChangingEventArgs.cs
- XmlSchemaObjectCollection.cs
- ThreadInterruptedException.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- HttpBrowserCapabilitiesWrapper.cs
- Color.cs
- XmlAttributes.cs
- FontSource.cs
- Stylesheet.cs
- CommandPlan.cs
- ValidationRule.cs
- ADRole.cs
- CapabilitiesUse.cs
- TableRow.cs
- NavigationEventArgs.cs
- ThicknessAnimationUsingKeyFrames.cs
- FixedSOMGroup.cs
- XmlTextReaderImpl.cs
- ListControl.cs
- ExpressionsCollectionEditor.cs
- PenLineCapValidation.cs
- Psha1DerivedKeyGeneratorHelper.cs
- GridItem.cs
- EntityDataSourceMemberPath.cs
- CannotUnloadAppDomainException.cs
- Label.cs
- AspNetSynchronizationContext.cs
- SchemaCollectionCompiler.cs
- HostSecurityManager.cs
- TransactionScope.cs
- SymbolEqualComparer.cs
- FocusChangedEventArgs.cs
- DataGridViewColumnConverter.cs
- MappingException.cs
- EventProviderBase.cs
- XmlSchemaRedefine.cs
- ListBox.cs
- HyperLinkField.cs
- WebPartEventArgs.cs
- BasicHttpBinding.cs
- ProfilePropertyNameValidator.cs
- SoapProcessingBehavior.cs
- Rethrow.cs
- XmlDeclaration.cs
- TabControlAutomationPeer.cs
- DataGridViewCell.cs
- PeerCollaborationPermission.cs
- TypedDataSetSchemaImporterExtension.cs
- EntitySetDataBindingList.cs
- PerformanceCounterPermissionEntry.cs
- CodeParameterDeclarationExpression.cs
- CodeObjectCreateExpression.cs
- SparseMemoryStream.cs
- DesignerAdapterAttribute.cs
- UserUseLicenseDictionaryLoader.cs
- Expander.cs
- ZipIOExtraFieldElement.cs
- ByeOperationAsyncResult.cs
- GridProviderWrapper.cs
- SqlRecordBuffer.cs
- StringUtil.cs
- ListBindingHelper.cs
- FlowLayoutPanel.cs
- AssertFilter.cs
- XsdCachingReader.cs
- PropertyExpression.cs
- ClientScriptManager.cs
- StringCollectionMarkupSerializer.cs
- SequentialOutput.cs
- NativeMethods.cs
- UserControlAutomationPeer.cs
- SynchronizingStream.cs
- List.cs
- WindowsGraphics.cs
- SqlDependencyUtils.cs
- ZoneButton.cs
- ObjectStateFormatter.cs
- DetailsViewPagerRow.cs
- DataGridCaption.cs
- ThreadInterruptedException.cs
- OutputCacheSettings.cs
- WindowsSidIdentity.cs
- SymmetricSecurityProtocol.cs
- OptimizedTemplateContentHelper.cs
- UseLicense.cs
- MailHeaderInfo.cs
- GridView.cs
- ScriptingJsonSerializationSection.cs
- StorageEntityContainerMapping.cs
- Style.cs
- HandledMouseEvent.cs
- JournalNavigationScope.cs
- WebPartCatalogCloseVerb.cs