Code:
/ FX-1434 / FX-1434 / 1.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
- XmlAnyElementAttribute.cs
- PageParser.cs
- CaretElement.cs
- TypefaceMetricsCache.cs
- FlagsAttribute.cs
- EntityDataSourceContainerNameConverter.cs
- XsltLibrary.cs
- XmlResolver.cs
- TextSpan.cs
- HasCopySemanticsAttribute.cs
- FunctionDetailsReader.cs
- TimeSpanStorage.cs
- Asn1Utilities.cs
- ImageDrawing.cs
- Int32KeyFrameCollection.cs
- TdsRecordBufferSetter.cs
- BamlTreeNode.cs
- IsolatedStorageFilePermission.cs
- RepeatBehavior.cs
- TextParagraphProperties.cs
- MetadataArtifactLoaderFile.cs
- IndexedEnumerable.cs
- EndOfStreamException.cs
- XhtmlBasicTextViewAdapter.cs
- IdnMapping.cs
- TdsParser.cs
- Slider.cs
- EnvelopedSignatureTransform.cs
- DocobjHost.cs
- TitleStyle.cs
- PolyLineSegment.cs
- WorkItem.cs
- Token.cs
- Condition.cs
- Vars.cs
- UnsignedPublishLicense.cs
- DataGridViewBindingCompleteEventArgs.cs
- SolidColorBrush.cs
- DateTimeFormatInfo.cs
- CompModSwitches.cs
- PrintDialog.cs
- XPathScanner.cs
- ToolStripProgressBar.cs
- CharacterHit.cs
- MsmqChannelListenerBase.cs
- TextViewBase.cs
- EncryptedKey.cs
- SamlAuthorizationDecisionClaimResource.cs
- BaseAsyncResult.cs
- ColumnTypeConverter.cs
- __Filters.cs
- BinaryVersion.cs
- DataRecordInfo.cs
- XmlQueryRuntime.cs
- EntityCollection.cs
- FactoryRecord.cs
- XmlDeclaration.cs
- WindowsListViewItem.cs
- ipaddressinformationcollection.cs
- PropertyValueChangedEvent.cs
- NameValueFileSectionHandler.cs
- EntityDataSourceQueryBuilder.cs
- TextTrailingWordEllipsis.cs
- LocatorManager.cs
- SpnegoTokenAuthenticator.cs
- SiteMapDataSourceView.cs
- PaintValueEventArgs.cs
- SafeNativeMethods.cs
- VerticalAlignConverter.cs
- XmlTextWriter.cs
- BitmapEffectOutputConnector.cs
- UIAgentMonitor.cs
- SafeRsaProviderHandle.cs
- DataGridViewRowEventArgs.cs
- WebProxyScriptElement.cs
- SQLDouble.cs
- FillRuleValidation.cs
- Latin1Encoding.cs
- ExceptionHelpers.cs
- VariantWrapper.cs
- SqlUnionizer.cs
- SessionStateUtil.cs
- TransactionsSectionGroup.cs
- BulletDecorator.cs
- BinaryObjectWriter.cs
- NativeRecognizer.cs
- ClientScriptManagerWrapper.cs
- ZoomComboBox.cs
- StorageModelBuildProvider.cs
- ArraySegment.cs
- ImpersonationContext.cs
- JsonReader.cs
- ProcessRequestArgs.cs
- IndentTextWriter.cs
- StatusStrip.cs
- XmlMemberMapping.cs
- designeractionlistschangedeventargs.cs
- ContentWrapperAttribute.cs
- TargetPerspective.cs
- UnsafeNativeMethods.cs