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
- SignatureResourcePool.cs
- PropertyEmitterBase.cs
- BitHelper.cs
- SharedStatics.cs
- SymDocumentType.cs
- XmlChildEnumerator.cs
- PnrpPermission.cs
- HelpInfo.cs
- VolatileEnlistmentState.cs
- TextInfo.cs
- XmlMemberMapping.cs
- LongPath.cs
- KeyGesture.cs
- CapabilitiesRule.cs
- UriSectionReader.cs
- ResponseBodyWriter.cs
- BezierSegment.cs
- ModelPerspective.cs
- OdbcInfoMessageEvent.cs
- DirectionalLight.cs
- SlipBehavior.cs
- SharedUtils.cs
- FacetValues.cs
- VersionedStream.cs
- XamlToRtfWriter.cs
- securitycriticaldataformultiplegetandset.cs
- InstanceValue.cs
- SuppressMessageAttribute.cs
- UpdateCommandGenerator.cs
- DataTableReader.cs
- SelectionListDesigner.cs
- SelectionBorderGlyph.cs
- SQLInt32Storage.cs
- Transactions.cs
- SafeRegistryHandle.cs
- WebPartTransformerAttribute.cs
- XslUrlEditor.cs
- BamlLocalizationDictionary.cs
- CodeStatementCollection.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- Transaction.cs
- UInt32Converter.cs
- InlineObject.cs
- ButtonChrome.cs
- SafeRightsManagementPubHandle.cs
- EventLogPermissionEntryCollection.cs
- CustomMenuItemCollection.cs
- BeginStoryboard.cs
- IDQuery.cs
- StreamInfo.cs
- ScrollChrome.cs
- ObjectSet.cs
- CompiledXpathExpr.cs
- DataGridViewColumnCollection.cs
- ShaperBuffers.cs
- PrimarySelectionAdorner.cs
- TextTreeText.cs
- WindowsSlider.cs
- SHA384.cs
- MDIWindowDialog.cs
- AsyncResult.cs
- ToggleButton.cs
- ProfileEventArgs.cs
- CachedTypeface.cs
- DataTableExtensions.cs
- Assembly.cs
- MaterializeFromAtom.cs
- unsafeIndexingFilterStream.cs
- XamlStyleSerializer.cs
- SqlFactory.cs
- WindowsMenu.cs
- ServiceHttpModule.cs
- SoapSchemaMember.cs
- UnmanagedMarshal.cs
- QueryCacheKey.cs
- SystemColorTracker.cs
- DesignerInterfaces.cs
- PropertiesTab.cs
- GifBitmapDecoder.cs
- HashHelper.cs
- ClientScriptManagerWrapper.cs
- GeometryHitTestParameters.cs
- SqlUDTStorage.cs
- ConfigurationManager.cs
- FunctionUpdateCommand.cs
- SessionStateModule.cs
- ListBase.cs
- PackageProperties.cs
- LinqExpressionNormalizer.cs
- MarkupObject.cs
- HtmlMeta.cs
- BuildProviderAppliesToAttribute.cs
- CredentialCache.cs
- CodeLinePragma.cs
- ValueExpressions.cs
- DirectionalLight.cs
- UriSection.cs
- ReaderWriterLock.cs
- DataServiceQueryException.cs
- ProviderSettingsCollection.cs