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
- WindowsAuthenticationEventArgs.cs
- WsrmTraceRecord.cs
- FormsAuthentication.cs
- MissingMemberException.cs
- InternalPermissions.cs
- ForEachAction.cs
- CompiledAction.cs
- TypeTypeConverter.cs
- QilLoop.cs
- AudioException.cs
- TransformValueSerializer.cs
- TemplatePartAttribute.cs
- ApplicationGesture.cs
- GenericEnumerator.cs
- CodeAssignStatement.cs
- WebPartTransformerCollection.cs
- VisualStyleTypesAndProperties.cs
- MouseButtonEventArgs.cs
- RootProfilePropertySettingsCollection.cs
- webproxy.cs
- MaterialCollection.cs
- ExpressionVisitor.cs
- OdbcCommandBuilder.cs
- CommonBehaviorsSection.cs
- FirstMatchCodeGroup.cs
- DllNotFoundException.cs
- IntPtr.cs
- BufferedGraphics.cs
- AsyncResult.cs
- DataMemberConverter.cs
- HtmlInputFile.cs
- TracingConnectionInitiator.cs
- JournalNavigationScope.cs
- DataSourceCacheDurationConverter.cs
- WindowsComboBox.cs
- CompensationExtension.cs
- UpDownBase.cs
- FrameSecurityDescriptor.cs
- ScrollBar.cs
- WebConfigurationFileMap.cs
- WindowsGrip.cs
- GetLedgerEntryForRecipientRequest.cs
- SqlClientWrapperSmiStream.cs
- AuthenticationService.cs
- RectAnimation.cs
- SponsorHelper.cs
- ZipIOCentralDirectoryFileHeader.cs
- DataListItemEventArgs.cs
- Rijndael.cs
- NoClickablePointException.cs
- XmlCharCheckingReader.cs
- WebBaseEventKeyComparer.cs
- FilterableAttribute.cs
- XmlSerializationWriter.cs
- oledbmetadatacollectionnames.cs
- WorkflowRuntimeBehavior.cs
- ParameterModifier.cs
- xdrvalidator.cs
- Events.cs
- ResourceBinder.cs
- SystemIPInterfaceStatistics.cs
- LogicalTreeHelper.cs
- NTAccount.cs
- WorkflowDataContext.cs
- _NegoStream.cs
- PersonalizableAttribute.cs
- HideDisabledControlAdapter.cs
- Renderer.cs
- LayoutEditorPart.cs
- CustomErrorCollection.cs
- SoapEnumAttribute.cs
- PtsPage.cs
- DataGridViewAccessibleObject.cs
- FontCacheUtil.cs
- ArcSegment.cs
- TransformValueSerializer.cs
- TextCollapsingProperties.cs
- MD5.cs
- ScrollBarAutomationPeer.cs
- TraceRecord.cs
- UIElementIsland.cs
- WinFormsSecurity.cs
- DispatcherOperation.cs
- BitmapMetadata.cs
- PerformanceCounterLib.cs
- XmlAttributeHolder.cs
- WinEventWrap.cs
- RuleSetBrowserDialog.cs
- FolderBrowserDialog.cs
- TreeNodeCollection.cs
- FieldNameLookup.cs
- ConvertEvent.cs
- SqlDataSource.cs
- ReversePositionQuery.cs
- XsdValidatingReader.cs
- SchemaAttDef.cs
- CrossContextChannel.cs
- HasCopySemanticsAttribute.cs
- EnumDataContract.cs
- FixedElement.cs