Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / Converters / DataFieldConverter.cs / 1305376 / DataFieldConverter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Design.MobileControls.Converters
{
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Data;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Globalization;
using System.Web.UI.Design;
using System.Web.UI.MobileControls;
using System.Security.Permissions;
///
///
///
/// Provides design-time support for a component's data field properties.
///
///
[
System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand,
Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)
]
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
public class DataFieldConverter : TypeConverter
{
private const String _dataMemberPropertyName = "DataMember";
private const String _dataSourcePropertyName = "DataSource";
///
///
///
/// Initializes a new instance of .
///
///
public DataFieldConverter()
{
}
///
///
///
/// 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);
}
///
///
///
/// Gets the fields present within the selected data source if information about them is available.
///
///
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
object[] names = null;
String dataMember = null;
bool autoGenerateFields = false;
bool autoGenerateFieldsSet = false;
ObjectList objectList = null;
if (context != null)
{
ArrayList list = new ArrayList();
PropertyDescriptorCollection props = null;
IComponent component = context.Instance as IComponent;
if (component is IDeviceSpecificChoiceDesigner)
{
Object owner = ((ChoicePropertyFilter)component).Owner;
PropertyDescriptor pd =
((ICustomTypeDescriptor)component).GetProperties()[_dataMemberPropertyName];
Debug.Assert(pd != null, "Cannot get DataMember");
if (owner is ObjectList)
{
autoGenerateFields = ((ObjectList)owner).AutoGenerateFields;
autoGenerateFieldsSet = true;
}
component = ((IDeviceSpecificChoiceDesigner)component).UnderlyingControl;
// See if owner already has a DataMember
dataMember = (String)pd.GetValue(owner);
Debug.Assert(dataMember != null);
if (dataMember != null && dataMember.Length == 0)
{
// Get it from underlying object.
dataMember = (String)pd.GetValue(component);
Debug.Assert(dataMember != null);
}
}
if (component != null)
{
objectList = component as ObjectList;
if (objectList != null)
{
foreach(ObjectListField field in objectList.Fields)
{
list.Add(field.Name);
}
if (!autoGenerateFieldsSet)
{
autoGenerateFields = objectList.AutoGenerateFields;
}
}
if (objectList == null || autoGenerateFields)
{
ISite componentSite = component.Site;
if (componentSite != null)
{
IDesignerHost designerHost = (IDesignerHost)componentSite.GetService(typeof(IDesignerHost));
if (designerHost != null)
{
IDesigner designer = designerHost.GetDesigner(component);
if (designer is IDataSourceProvider)
{
IEnumerable dataSource = null;
if (!String.IsNullOrEmpty(dataMember))
{
DataBindingCollection dataBindings =
((HtmlControlDesigner)designer).DataBindings;
DataBinding binding = dataBindings[_dataSourcePropertyName];
if (binding != null)
{
dataSource =
DesignTimeData.GetSelectedDataSource(
component,
binding.Expression,
dataMember);
}
}
else
{
dataSource =
((IDataSourceProvider)designer).GetResolvedSelectedDataSource();
}
if (dataSource != null)
{
props = DesignTimeData.GetDataFields(dataSource);
}
}
}
}
}
}
if (props != null)
{
foreach (PropertyDescriptor propDesc in props)
{
list.Add(propDesc.Name);
}
}
names = list.ToArray();
Array.Sort(names);
}
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.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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Point3DAnimationUsingKeyFrames.cs
- SpoolingTask.cs
- StylusOverProperty.cs
- TimeoutException.cs
- ManagementObjectSearcher.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- Query.cs
- XhtmlBasicObjectListAdapter.cs
- ManipulationStartingEventArgs.cs
- TypeNameConverter.cs
- WebPartDescriptionCollection.cs
- AssociationSetEnd.cs
- ChannelServices.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- Imaging.cs
- RewritingValidator.cs
- Events.cs
- SecurityTokenException.cs
- Literal.cs
- ProgressChangedEventArgs.cs
- JavaScriptObjectDeserializer.cs
- CollectionEditorDialog.cs
- DbConnectionPoolGroupProviderInfo.cs
- EdmRelationshipRoleAttribute.cs
- SqlDataReader.cs
- BufferedOutputStream.cs
- AlternationConverter.cs
- GridViewRowEventArgs.cs
- SafeNativeMethodsCLR.cs
- OdbcConnectionHandle.cs
- FixedBufferAttribute.cs
- WebEvents.cs
- WorkItem.cs
- UnsafeNativeMethods.cs
- DoubleAnimationBase.cs
- SessionStateSection.cs
- nulltextnavigator.cs
- Compiler.cs
- DataGridViewCheckBoxColumn.cs
- CustomAttributeBuilder.cs
- Thumb.cs
- ReaderWriterLock.cs
- TextEffectResolver.cs
- EastAsianLunisolarCalendar.cs
- Ray3DHitTestResult.cs
- MultiPropertyDescriptorGridEntry.cs
- MappingItemCollection.cs
- ContextQuery.cs
- TextElementCollectionHelper.cs
- VariableBinder.cs
- TypeForwardedFromAttribute.cs
- TemplatedAdorner.cs
- DataTemplateKey.cs
- ScrollBarRenderer.cs
- CorrelationRequestContext.cs
- OutputWindow.cs
- ToggleButton.cs
- MethodBuilderInstantiation.cs
- xdrvalidator.cs
- Graph.cs
- oledbmetadatacolumnnames.cs
- SizeFConverter.cs
- XmlAttributeAttribute.cs
- DiscoveryClientDuplexChannel.cs
- UniqueTransportManagerRegistration.cs
- InvalidDataContractException.cs
- GeneralTransform3D.cs
- WindowsToolbarAsMenu.cs
- CodeIdentifier.cs
- ArrayTypeMismatchException.cs
- DataReceivedEventArgs.cs
- OrderByQueryOptionExpression.cs
- NavigationProperty.cs
- NameNode.cs
- StrokeCollectionDefaultValueFactory.cs
- DefaultSection.cs
- BasePropertyDescriptor.cs
- HttpRuntime.cs
- DataGridViewRowPostPaintEventArgs.cs
- ViewStateException.cs
- TdsParserStateObject.cs
- ThemeDictionaryExtension.cs
- glyphs.cs
- ExtendedProtectionPolicy.cs
- SystemTcpStatistics.cs
- PrimitiveOperationFormatter.cs
- VersionUtil.cs
- ProtocolElement.cs
- EncoderParameters.cs
- BreakSafeBase.cs
- odbcmetadatacollectionnames.cs
- ExecutedRoutedEventArgs.cs
- SafeHandle.cs
- TcpActivation.cs
- PeerApplication.cs
- ShapeTypeface.cs
- HtmlLink.cs
- ServerValidateEventArgs.cs
- StatusBarAutomationPeer.cs
- DoubleAnimationUsingPath.cs