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
- SecurityTokenProvider.cs
- WindowsRichEditRange.cs
- Margins.cs
- String.cs
- WebPartConnectionsDisconnectVerb.cs
- Viewport3DVisual.cs
- IntegerValidatorAttribute.cs
- ElementsClipboardData.cs
- DbConnectionHelper.cs
- GlyphRun.cs
- SortQuery.cs
- Debug.cs
- CallbackBehaviorAttribute.cs
- WebHttpBinding.cs
- CharacterMetrics.cs
- DBSqlParser.cs
- QuaternionAnimation.cs
- XPathMultyIterator.cs
- ConfigXmlSignificantWhitespace.cs
- DataGridViewLinkColumn.cs
- HWStack.cs
- CommandBindingCollection.cs
- RelationshipDetailsRow.cs
- TransactionsSectionGroup.cs
- PingOptions.cs
- TextContainerChangeEventArgs.cs
- UserMapPath.cs
- ApplicationSecurityManager.cs
- SimpleType.cs
- PointLightBase.cs
- CollectionBuilder.cs
- HtmlSelect.cs
- CollectionViewGroup.cs
- EventPropertyMap.cs
- WebPartConnectionsConfigureVerb.cs
- DataServiceConfiguration.cs
- StackBuilderSink.cs
- ListBindableAttribute.cs
- PrefixHandle.cs
- FontStretches.cs
- EntitySetBase.cs
- SettingsPropertyCollection.cs
- WebPartChrome.cs
- PinnedBufferMemoryStream.cs
- XmlSerializerFactory.cs
- RepeatBehaviorConverter.cs
- ListBox.cs
- CompilerCollection.cs
- Literal.cs
- WebBaseEventKeyComparer.cs
- mactripleDES.cs
- WebPartEventArgs.cs
- SafeCryptContextHandle.cs
- MyContact.cs
- NamedObject.cs
- EventRouteFactory.cs
- BlockUIContainer.cs
- SubpageParaClient.cs
- BitmapCache.cs
- _SpnDictionary.cs
- GridViewEditEventArgs.cs
- HandleExceptionArgs.cs
- InternalSafeNativeMethods.cs
- TextParagraphProperties.cs
- RegexNode.cs
- ZipPackagePart.cs
- ActiveXContainer.cs
- FlowDocumentReader.cs
- FormViewUpdatedEventArgs.cs
- GatewayIPAddressInformationCollection.cs
- DeliveryRequirementsAttribute.cs
- MarginsConverter.cs
- GridItemCollection.cs
- SiteMapNode.cs
- RoutingConfiguration.cs
- XmlSchemaAnnotation.cs
- TextCompositionManager.cs
- ByteConverter.cs
- LocalFileSettingsProvider.cs
- UnsafeNativeMethods.cs
- Metafile.cs
- _AcceptOverlappedAsyncResult.cs
- NameValueConfigurationCollection.cs
- SiteMapHierarchicalDataSourceView.cs
- ModelUIElement3D.cs
- ObjectConverter.cs
- ProxyManager.cs
- HTTPAPI_VERSION.cs
- PageAdapter.cs
- ListDictionary.cs
- _LoggingObject.cs
- BuildProvider.cs
- BasicBrowserDialog.cs
- ServiceRouteHandler.cs
- BaseProcessor.cs
- SByteStorage.cs
- ModuleConfigurationInfo.cs
- InheritanceContextHelper.cs
- NamespaceListProperty.cs
- UInt64Storage.cs