Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / DataMemberConverter.cs / 1 / DataMemberConverter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Design {
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Data;
using System.Design;
using System.Diagnostics;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Web.UI.Design.WebControls;
///
///
///
/// Provides design-time support for a component's DataMember properties.
///
///
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
public class DataMemberConverter : TypeConverter {
///
///
///
/// Initializes a new instance of .
///
///
public DataMemberConverter() {
}
///
///
///
/// Gets a value indicating whether this converter can
/// convert an object in the given source type to the native type of the converter
/// using the context.
///
///
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) {
if (sourceType == typeof(string)) {
return true;
}
return false;
}
///
///
///
/// Converts the given object to the converter's native type.
///
///
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {
if (value == null) {
return String.Empty;
}
else if (value.GetType() == typeof(string)) {
return (string)value;
}
throw GetConvertFromException(value);
}
///
///
/// Returns the DesignerDataSourceView of the given data bound control designer.
///
///
private DesignerDataSourceView GetView(IDesigner dataBoundControlDesigner) {
DataBoundControlDesigner dbcDesigner = dataBoundControlDesigner as DataBoundControlDesigner;
if (dbcDesigner != null) {
return dbcDesigner.DesignerView;
}
else {
BaseDataListDesigner baseDataListDesigner = dataBoundControlDesigner as BaseDataListDesigner;
if (baseDataListDesigner != null) {
return baseDataListDesigner.DesignerView;
}
else {
RepeaterDesigner repeaterDesigner = dataBoundControlDesigner as RepeaterDesigner;
if (repeaterDesigner != null) {
return repeaterDesigner.DesignerView;
}
}
}
return null;
}
///
///
///
/// Gets the fields present within the selected data source if information about them is available.
///
///
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) {
string[] names = null;
if (context != null) {
//
// This converter shouldn't be used in a multi-select scenario. If it is, it simply
// returns no standard values.
IComponent component = context.Instance as IComponent;
if (component != null) {
ISite componentSite = component.Site;
if (componentSite != null) {
IDesignerHost designerHost = (IDesignerHost)componentSite.GetService(typeof(IDesignerHost));
if (designerHost != null) {
IDesigner dataBoundControlDesigner = designerHost.GetDesigner(component);
DesignerDataSourceView view = GetView(dataBoundControlDesigner);
if (view != null) {
IDataSourceDesigner dsDesigner = view.DataSourceDesigner;
if (dsDesigner != null) {
string[] viewNames = dsDesigner.GetViewNames();
if (viewNames != null) {
names = new string[viewNames.Length];
viewNames.CopyTo(names, 0);
}
}
}
if ((names == null) && (dataBoundControlDesigner != null) && (dataBoundControlDesigner is IDataSourceProvider)) {
IDataSourceProvider dataSourceProvider = dataBoundControlDesigner as IDataSourceProvider;
object dataSource = null;
if (dataSourceProvider != null) {
dataSource = dataSourceProvider.GetSelectedDataSource();
}
if (dataSource != null) {
names = DesignTimeData.GetDataMembers(dataSource);
}
}
}
}
}
if (names == null) {
names = new string[0];
}
Array.Sort(names, Comparer.Default);
}
return new StandardValuesCollection(names);
}
///
///
///
/// Gets a value indicating whether the collection of standard values returned from
/// is an exclusive
/// list of possible values, using the specified context.
///
///
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) {
return false;
}
///
///
///
/// Gets a value indicating whether this object supports a standard set of values
/// that can be picked from a list.
///
///
public override bool GetStandardValuesSupported(ITypeDescriptorContext context) {
if (context != null && context.Instance is IComponent) {
// We only support the dropdown in single-select mode.
return true;
}
return false;
}
}
}
// 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
- ConsoleKeyInfo.cs
- MergePropertyDescriptor.cs
- MenuAdapter.cs
- LineGeometry.cs
- ByValueEqualityComparer.cs
- GridProviderWrapper.cs
- StringBlob.cs
- HttpResponseHeader.cs
- DocumentSequenceHighlightLayer.cs
- RuntimeConfigLKG.cs
- Bitmap.cs
- SqlCaseSimplifier.cs
- SystemIPInterfaceProperties.cs
- ExpressionNode.cs
- ReadOnlyPropertyMetadata.cs
- FreeFormDesigner.cs
- ViewStateException.cs
- _DigestClient.cs
- IntegrationExceptionEventArgs.cs
- EastAsianLunisolarCalendar.cs
- FeatureAttribute.cs
- ProxyGenerator.cs
- WhitespaceRule.cs
- GifBitmapDecoder.cs
- SmiRequestExecutor.cs
- AppSettingsExpressionBuilder.cs
- ProfileBuildProvider.cs
- Context.cs
- UrlMapping.cs
- SetIterators.cs
- ShapingEngine.cs
- GeneratedCodeAttribute.cs
- ReadOnlyHierarchicalDataSourceView.cs
- Object.cs
- SQLConvert.cs
- Publisher.cs
- ReliabilityContractAttribute.cs
- assertwrapper.cs
- ParentQuery.cs
- AttributeQuery.cs
- Attributes.cs
- HitTestFilterBehavior.cs
- TcpChannelListener.cs
- TableLayoutStyle.cs
- TreeView.cs
- TextRangeEditLists.cs
- RelationshipWrapper.cs
- TextRangeBase.cs
- OleDbRowUpdatingEvent.cs
- Model3DCollection.cs
- CancellationToken.cs
- EntityTemplateFactory.cs
- NodeCounter.cs
- GridItemPattern.cs
- ConnectionConsumerAttribute.cs
- CompiledRegexRunnerFactory.cs
- XamlClipboardData.cs
- entityreference_tresulttype.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- UrlAuthFailedErrorFormatter.cs
- VisualBrush.cs
- HttpInputStream.cs
- DataBindEngine.cs
- ObjectAnimationBase.cs
- GridViewRowCollection.cs
- XmlHierarchicalEnumerable.cs
- DSASignatureFormatter.cs
- PeerCredential.cs
- QueryStringConverter.cs
- ReadContentAsBinaryHelper.cs
- RoleManagerModule.cs
- RoutingBehavior.cs
- BuildDependencySet.cs
- ProviderSettings.cs
- GAC.cs
- TextServicesLoader.cs
- ZoomComboBox.cs
- VScrollProperties.cs
- FormsAuthenticationUser.cs
- COMException.cs
- SecurityResources.cs
- SymbolDocumentGenerator.cs
- HwndHostAutomationPeer.cs
- ExecutionEngineException.cs
- ArrayConverter.cs
- DictionaryBase.cs
- ControlEvent.cs
- ExpandCollapseProviderWrapper.cs
- ProfilePropertyNameValidator.cs
- Pts.cs
- PointF.cs
- XmlArrayAttribute.cs
- OneToOneMappingSerializer.cs
- DataAccessor.cs
- CodeTypeMemberCollection.cs
- AccessDataSourceView.cs
- TextTrailingCharacterEllipsis.cs
- Enum.cs
- CLRBindingWorker.cs
- TableRowGroupCollection.cs