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
- WindowsToolbarAsMenu.cs
- Utility.cs
- PlainXmlDeserializer.cs
- DataSourceDescriptorCollection.cs
- ResourceDisplayNameAttribute.cs
- CaseCqlBlock.cs
- CryptoApi.cs
- Utils.cs
- InstanceHandleConflictException.cs
- VirtualizingStackPanel.cs
- DesignerHelpers.cs
- BindingContext.cs
- BinaryKeyIdentifierClause.cs
- RequestChannel.cs
- XmlTextReaderImpl.cs
- formatter.cs
- UrlPath.cs
- CodeDOMProvider.cs
- SmtpReplyReaderFactory.cs
- FamilyMap.cs
- XmlRawWriterWrapper.cs
- DmlSqlGenerator.cs
- ArraySegment.cs
- ArcSegment.cs
- DummyDataSource.cs
- AssemblyCache.cs
- SizeConverter.cs
- Help.cs
- EndpointAddressMessageFilterTable.cs
- TemplateControlParser.cs
- ITreeGenerator.cs
- CurrencyWrapper.cs
- SqlProvider.cs
- AssociationSetEnd.cs
- RegexGroup.cs
- AsymmetricKeyExchangeDeformatter.cs
- Int16Converter.cs
- TextDecorationCollectionConverter.cs
- BindingGroup.cs
- Condition.cs
- SoapDocumentMethodAttribute.cs
- PrimitiveXmlSerializers.cs
- HtmlElementCollection.cs
- FrameworkElement.cs
- TraceLevelStore.cs
- MenuItem.cs
- FSWPathEditor.cs
- TextTrailingWordEllipsis.cs
- StringUtil.cs
- TypeConverterHelper.cs
- CachedFontFamily.cs
- TextProperties.cs
- GroupStyle.cs
- BoundingRectTracker.cs
- CodeDirectionExpression.cs
- SynchronizationValidator.cs
- ActivityScheduledRecord.cs
- RootContext.cs
- SqlDelegatedTransaction.cs
- DataGridViewAddColumnDialog.cs
- ListViewDeleteEventArgs.cs
- MetadataArtifactLoader.cs
- VirtualizingPanel.cs
- CodeMethodReturnStatement.cs
- Cloud.cs
- SessionStateModule.cs
- DateTimeHelper.cs
- SizeChangedEventArgs.cs
- DesignerInterfaces.cs
- PageHandlerFactory.cs
- ConfigurationPropertyAttribute.cs
- RouteValueExpressionBuilder.cs
- Quaternion.cs
- RegistryHandle.cs
- DesignerActionItemCollection.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- DesigntimeLicenseContext.cs
- PackagePartCollection.cs
- XmlSubtreeReader.cs
- CrossSiteScriptingValidation.cs
- SoapSchemaExporter.cs
- MetadataPropertyAttribute.cs
- PropertyCollection.cs
- TreeNodeStyle.cs
- XamlWriter.cs
- _SSPIWrapper.cs
- Font.cs
- BCryptSafeHandles.cs
- NamespaceInfo.cs
- FloaterBaseParaClient.cs
- EncryptedPackageFilter.cs
- TranslateTransform.cs
- AttachedPropertyBrowsableAttribute.cs
- PackageDocument.cs
- LocalValueEnumerator.cs
- XmlSiteMapProvider.cs
- FloaterParaClient.cs
- UnsafeNativeMethodsMilCoreApi.cs
- ReaderContextStackData.cs
- MatrixAnimationUsingKeyFrames.cs