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
- WebConfigurationHost.cs
- ConfigurationProperty.cs
- LicFileLicenseProvider.cs
- MultipartContentParser.cs
- RayMeshGeometry3DHitTestResult.cs
- BindingNavigator.cs
- BulletChrome.cs
- Setter.cs
- ChameleonKey.cs
- DeflateStream.cs
- GlobalItem.cs
- SessionStateSection.cs
- HtmlTableCellCollection.cs
- TabControl.cs
- FrameworkPropertyMetadata.cs
- FileDialogCustomPlace.cs
- XslTransform.cs
- ClientScriptManagerWrapper.cs
- LicFileLicenseProvider.cs
- FileDialog_Vista.cs
- LogStore.cs
- CatalogPartChrome.cs
- GridViewColumn.cs
- ProxyGenerationError.cs
- Interlocked.cs
- ListViewTableCell.cs
- SqlWebEventProvider.cs
- RequestQueue.cs
- WindowsEditBox.cs
- XPathException.cs
- ColorTranslator.cs
- TextServicesCompartmentEventSink.cs
- EventWaitHandleSecurity.cs
- OrElse.cs
- Point3DCollection.cs
- GestureRecognitionResult.cs
- StagingAreaInputItem.cs
- IriParsingElement.cs
- SchemaImporter.cs
- hresults.cs
- SafeNativeMethodsOther.cs
- _SafeNetHandles.cs
- RtType.cs
- HwndSourceParameters.cs
- VectorKeyFrameCollection.cs
- RequestBringIntoViewEventArgs.cs
- TextUtf8RawTextWriter.cs
- TypeListConverter.cs
- HGlobalSafeHandle.cs
- FeatureManager.cs
- DataSourceBooleanViewSchemaConverter.cs
- CacheDependency.cs
- SqlParameterizer.cs
- Span.cs
- RuntimeVariableList.cs
- MissingMethodException.cs
- SqlTypeConverter.cs
- printdlgexmarshaler.cs
- DiscreteKeyFrames.cs
- CodeNamespaceImportCollection.cs
- SqlWriter.cs
- GZipObjectSerializer.cs
- Menu.cs
- TreeNodeBinding.cs
- BulletDecorator.cs
- ConstructorNeedsTagAttribute.cs
- LostFocusEventManager.cs
- ImplicitInputBrush.cs
- TransformerInfo.cs
- OrderedDictionary.cs
- IntAverageAggregationOperator.cs
- XmlNamespaceManager.cs
- WizardPanelChangingEventArgs.cs
- ConfigurationElement.cs
- TextDataBindingHandler.cs
- BindingRestrictions.cs
- RowSpanVector.cs
- RegexCompilationInfo.cs
- ActivityCodeDomSerializationManager.cs
- TransportSecurityBindingElement.cs
- PropertySourceInfo.cs
- XamlWriter.cs
- PointF.cs
- TextRunCacheImp.cs
- InfiniteTimeSpanConverter.cs
- MethodToken.cs
- DataGridLinkButton.cs
- CreateParams.cs
- CodeAttributeDeclarationCollection.cs
- ConvertEvent.cs
- HtmlInputText.cs
- XsdBuildProvider.cs
- SerialPort.cs
- SqlCommandSet.cs
- PackWebRequestFactory.cs
- CustomCredentialPolicy.cs
- FacetValues.cs
- TextBox.cs
- TextElementCollectionHelper.cs
- ContentHostHelper.cs