Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebParts / RowToFieldTransformer.cs / 2 / RowToFieldTransformer.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls.WebParts {
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Security.Permissions;
using System.Web.UI.WebControls;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[WebPartTransformer(typeof(IWebPartRow), typeof(IWebPartField))]
public sealed class RowToFieldTransformer : WebPartTransformer, IWebPartField {
private IWebPartRow _provider;
private string _fieldName;
// We know there is only 1 RowCallback, since transformers can only have 1 consumer
private FieldCallback _callback;
public override Control CreateConfigurationControl() {
return new RowToFieldConfigurationWizard(this);
}
public string FieldName {
get {
return (_fieldName != null) ? _fieldName : String.Empty;
}
set {
_fieldName = value;
}
}
private PropertyDescriptorCollection ProviderSchema {
get {
return (_provider != null) ? _provider.Schema : null;
}
}
private void GetRowData(object rowData) {
Debug.Assert(_callback != null);
object fieldValue = null;
if (rowData != null) {
PropertyDescriptor prop = ((IWebPartField)this).Schema;
if (prop != null) {
fieldValue = prop.GetValue(rowData);
}
}
_callback(fieldValue);
}
protected internal override void LoadConfigurationState(object savedState) {
_fieldName = (string)savedState;
}
protected internal override object SaveConfigurationState() {
return _fieldName;
}
public override object Transform(object providerData) {
_provider = (IWebPartRow)providerData;
return this;
}
#region Implementation of IWebPartField
void IWebPartField.GetFieldValue(FieldCallback callback) {
if (callback == null) {
throw new ArgumentNullException("callback");
}
if (_provider != null) {
_callback = callback;
_provider.GetRowData(new RowCallback(GetRowData));
}
else {
callback(null);
}
}
PropertyDescriptor IWebPartField.Schema {
get {
PropertyDescriptorCollection schema = ProviderSchema;
return (schema != null) ? schema.Find(FieldName, /* ignoreCase */ true) : null;
}
}
#endregion
private sealed class RowToFieldConfigurationWizard : TransformerConfigurationWizardBase {
private DropDownList _fieldName;
private RowToFieldTransformer _owner;
private const string fieldNameID = "FieldName";
public RowToFieldConfigurationWizard(RowToFieldTransformer owner) {
Debug.Assert(owner != null);
_owner = owner;
}
// Dummy consumer schema
protected override PropertyDescriptorCollection ConsumerSchema {
get {
return null;
}
}
protected override PropertyDescriptorCollection ProviderSchema {
get {
return _owner.ProviderSchema;
}
}
protected override void CreateWizardSteps() {
// The WizardSteps should be empty when this is called
Debug.Assert(WizardSteps.Count == 0);
WizardStep s = new WizardStep();
_fieldName = new DropDownList();
_fieldName.ID = fieldNameID;
if (OldProviderNames != null) {
for (int i=0; i < OldProviderNames.Length / 2; i++) {
ListItem item = new ListItem(OldProviderNames[2*i], OldProviderNames[2*i + 1]);
// Ignore case when setting selected value, since we ignore case when
// returing the connection data. (
if (String.Equals(item.Value, _owner.FieldName, StringComparison.OrdinalIgnoreCase)) {
item.Selected = true;
}
_fieldName.Items.Add(item);
}
}
else {
_fieldName.Items.Add(new ListItem(SR.GetString(SR.RowToFieldTransformer_NoProviderSchema)));
_fieldName.Enabled = false;
}
Label fieldNameLabel = new Label();
fieldNameLabel.Text = SR.GetString(SR.RowToFieldTransformer_FieldName);
fieldNameLabel.AssociatedControlID = _fieldName.ID;
s.Controls.Add(fieldNameLabel);
s.Controls.Add(new LiteralControl(" "));
s.Controls.Add(_fieldName);
WizardSteps.Add(s);
}
protected override void OnFinishButtonClick(WizardNavigationEventArgs e) {
Debug.Assert(_fieldName != null);
string selectedFieldName = null;
if (_fieldName.Enabled) {
selectedFieldName = _fieldName.SelectedValue;
}
_owner.FieldName = selectedFieldName;
base.OnFinishButtonClick(e);
}
}
}
}
// 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
- WsrmMessageInfo.cs
- XmlNodeChangedEventArgs.cs
- BitmapDecoder.cs
- filewebresponse.cs
- x509store.cs
- EdmTypeAttribute.cs
- DiscriminatorMap.cs
- UnionCodeGroup.cs
- TextElement.cs
- SrgsElementFactory.cs
- IntegerValidatorAttribute.cs
- NumberEdit.cs
- StructuredProperty.cs
- FormsAuthenticationUserCollection.cs
- MissingSatelliteAssemblyException.cs
- util.cs
- ActiveDocumentEvent.cs
- ZipQueryOperator.cs
- ProxyManager.cs
- SqlRowUpdatingEvent.cs
- CodeCastExpression.cs
- UnsafeCollabNativeMethods.cs
- SwitchLevelAttribute.cs
- XmlRootAttribute.cs
- StaticTextPointer.cs
- DependencyObject.cs
- QueryableDataSourceHelper.cs
- DateTimeConverter.cs
- ValidationSummary.cs
- InOutArgumentConverter.cs
- QilXmlWriter.cs
- NavigatorInput.cs
- Queue.cs
- codemethodreferenceexpression.cs
- CompilerTypeWithParams.cs
- WorkingDirectoryEditor.cs
- MLangCodePageEncoding.cs
- SchemaHelper.cs
- ListDictionaryInternal.cs
- AssemblyInfo.cs
- Command.cs
- DataGridViewCellPaintingEventArgs.cs
- MultiBindingExpression.cs
- OneWayBindingElementImporter.cs
- MouseEvent.cs
- WebHttpBindingElement.cs
- RoleManagerSection.cs
- DragCompletedEventArgs.cs
- CodeGroup.cs
- ResourceFallbackManager.cs
- Container.cs
- GenericUriParser.cs
- DynamicPropertyHolder.cs
- Parser.cs
- StickyNote.cs
- ScrollBar.cs
- CheckedListBox.cs
- DPCustomTypeDescriptor.cs
- CodeDelegateInvokeExpression.cs
- IndicShape.cs
- BrowserCapabilitiesFactory.cs
- UnsafeNativeMethods.cs
- OuterGlowBitmapEffect.cs
- TemplateNodeContextMenu.cs
- GatewayDefinition.cs
- MarshalDirectiveException.cs
- ListViewTableRow.cs
- PrePrepareMethodAttribute.cs
- SyndicationContent.cs
- ByteBufferPool.cs
- Rijndael.cs
- WSSecurityPolicy12.cs
- HMACSHA384.cs
- SafeLocalMemHandle.cs
- WindowsAltTab.cs
- XmlSchemaAll.cs
- DefaultParameterValueAttribute.cs
- ValueTypeFixupInfo.cs
- UIAgentInitializationException.cs
- ControlBuilder.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- TimeSpanMinutesConverter.cs
- Journal.cs
- TableDetailsCollection.cs
- MemoryMappedViewAccessor.cs
- SplashScreenNativeMethods.cs
- ResourceDictionary.cs
- PresentationAppDomainManager.cs
- TypeLoadException.cs
- SizeConverter.cs
- MemoryFailPoint.cs
- EventProviderClassic.cs
- WebPartCatalogAddVerb.cs
- ActionFrame.cs
- FactoryRecord.cs
- ConsoleTraceListener.cs
- Missing.cs
- AudioBase.cs
- Column.cs
- DataGridrowEditEndingEventArgs.cs