Code:
                         / Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / UI / WebControls / DataControlLinkButton.cs / 1 / DataControlLinkButton.cs
                        
                        
                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
//  
//----------------------------------------------------------------------------- 
namespace System.Web.UI.WebControls { 
 
    using System;
    using System.Drawing; 
    using System.Web.Util;
    ///  
    ///  Derived version of LinkButton used within a DataControl.
    ///   
    [SupportsEventValidation] 
    internal class DataControlLinkButton : LinkButton {
 
        IPostBackContainer _container;
        string _callbackArgument;
        bool _enableCallback;
 
        internal DataControlLinkButton(IPostBackContainer container) {
            _container = container; 
        } 
        public override bool CausesValidation { 
            get {
                if (_container != null) {
                    return false;
                } 
                return base.CausesValidation;
            } 
            set { 
                if (_container != null) {
                    throw new NotSupportedException(SR.GetString(SR.CannotSetValidationOnDataControlButtons)); 
                }
                base.CausesValidation = value;
            }
        } 
        internal void EnableCallback(string argument) { 
            _enableCallback = true; 
            _callbackArgument = argument;
        } 
        protected override PostBackOptions GetPostBackOptions() {
            if (_container != null) {
                return _container.GetPostBackOptions(this); 
            }
 
            return base.GetPostBackOptions(); 
        }
 
        protected internal override void Render(HtmlTextWriter writer) {
            SetCallbackProperties();
            SetForeColor();
            base.Render(writer); 
        }
 
        private void SetCallbackProperties() { 
            if (_enableCallback) {
                ICallbackContainer _callbackContainer = _container as ICallbackContainer; 
                if (_callbackContainer != null) {
                    string callbackScript = _callbackContainer.GetCallbackScript(this, _callbackArgument);
                    if (!String.IsNullOrEmpty(callbackScript)) {
                        this.OnClientClick = callbackScript; 
                    }
                } 
            } 
        }
 
        /// 
        ///  In HTML hyperlinks always use the browser's link color.
        ///  For the DataControl, we want all LinkButtons to honor the ForeColor setting. 
        ///  This requires looking up into the control hierarchy to see if either the cell
        ///  or the containing row or table define a ForeColor. 
        ///   
        protected virtual void SetForeColor() {
            if (ControlStyle.IsSet(System.Web.UI.WebControls.Style.PROP_FORECOLOR) == false) { 
                Color hyperLinkForeColor;
                Control control = this;
                for (int i = 0; i < 3; i++) { 
                    control = control.Parent;
 
                    Debug.Assert(((i == 0) && (control is TableCell)) || 
                                 ((i == 1) && (control is TableRow)) ||
                                 ((i == 2) && (control is Table))); 
                    hyperLinkForeColor = ((WebControl)control).ForeColor;
                    if (hyperLinkForeColor != Color.Empty) {
                        ForeColor = hyperLinkForeColor;
                        break; 
                    }
                } 
            } 
        }
    } 
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
//  
//----------------------------------------------------------------------------- 
namespace System.Web.UI.WebControls { 
 
    using System;
    using System.Drawing; 
    using System.Web.Util;
    ///  
    ///  Derived version of LinkButton used within a DataControl.
    ///   
    [SupportsEventValidation] 
    internal class DataControlLinkButton : LinkButton {
 
        IPostBackContainer _container;
        string _callbackArgument;
        bool _enableCallback;
 
        internal DataControlLinkButton(IPostBackContainer container) {
            _container = container; 
        } 
        public override bool CausesValidation { 
            get {
                if (_container != null) {
                    return false;
                } 
                return base.CausesValidation;
            } 
            set { 
                if (_container != null) {
                    throw new NotSupportedException(SR.GetString(SR.CannotSetValidationOnDataControlButtons)); 
                }
                base.CausesValidation = value;
            }
        } 
        internal void EnableCallback(string argument) { 
            _enableCallback = true; 
            _callbackArgument = argument;
        } 
        protected override PostBackOptions GetPostBackOptions() {
            if (_container != null) {
                return _container.GetPostBackOptions(this); 
            }
 
            return base.GetPostBackOptions(); 
        }
 
        protected internal override void Render(HtmlTextWriter writer) {
            SetCallbackProperties();
            SetForeColor();
            base.Render(writer); 
        }
 
        private void SetCallbackProperties() { 
            if (_enableCallback) {
                ICallbackContainer _callbackContainer = _container as ICallbackContainer; 
                if (_callbackContainer != null) {
                    string callbackScript = _callbackContainer.GetCallbackScript(this, _callbackArgument);
                    if (!String.IsNullOrEmpty(callbackScript)) {
                        this.OnClientClick = callbackScript; 
                    }
                } 
            } 
        }
 
        /// 
        ///  In HTML hyperlinks always use the browser's link color.
        ///  For the DataControl, we want all LinkButtons to honor the ForeColor setting. 
        ///  This requires looking up into the control hierarchy to see if either the cell
        ///  or the containing row or table define a ForeColor. 
        ///   
        protected virtual void SetForeColor() {
            if (ControlStyle.IsSet(System.Web.UI.WebControls.Style.PROP_FORECOLOR) == false) { 
                Color hyperLinkForeColor;
                Control control = this;
                for (int i = 0; i < 3; i++) { 
                    control = control.Parent;
 
                    Debug.Assert(((i == 0) && (control is TableCell)) || 
                                 ((i == 1) && (control is TableRow)) ||
                                 ((i == 2) && (control is Table))); 
                    hyperLinkForeColor = ((WebControl)control).ForeColor;
                    if (hyperLinkForeColor != Color.Empty) {
                        ForeColor = hyperLinkForeColor;
                        break; 
                    }
                } 
            } 
        }
    } 
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        
                        
                        
                        
                    Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- _NegoStream.cs
- XmlSchemaGroup.cs
- Span.cs
- Run.cs
- CssStyleCollection.cs
- OdbcConnectionString.cs
- RequiredAttributeAttribute.cs
- ConnectionPoolRegistry.cs
- HandleExceptionArgs.cs
- ClaimTypes.cs
- WebServiceMethodData.cs
- CommonXSendMessage.cs
- DatatypeImplementation.cs
- ConfigurationException.cs
- ListBindableAttribute.cs
- BaseTransportHeaders.cs
- DataGridHelper.cs
- RawTextInputReport.cs
- DropSource.cs
- FileEnumerator.cs
- Int64KeyFrameCollection.cs
- EncryptedHeader.cs
- GlyphsSerializer.cs
- ToolStrip.cs
- XamlVector3DCollectionSerializer.cs
- ClientRuntimeConfig.cs
- FormViewDesigner.cs
- ScriptComponentDescriptor.cs
- SqlDataSourceEnumerator.cs
- StorageRoot.cs
- _TimerThread.cs
- PartitionResolver.cs
- OutputScopeManager.cs
- QuestionEventArgs.cs
- TileBrush.cs
- GridPatternIdentifiers.cs
- Attachment.cs
- PageMediaType.cs
- BoundPropertyEntry.cs
- StateMachine.cs
- DataGridViewCellValueEventArgs.cs
- CircleHotSpot.cs
- ButtonStandardAdapter.cs
- Literal.cs
- DataColumn.cs
- EndpointAddress.cs
- BlockExpression.cs
- TemplateAction.cs
- RsaSecurityTokenAuthenticator.cs
- COM2Properties.cs
- Triangle.cs
- CompoundFileStreamReference.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- ExpressionParser.cs
- EmptyStringExpandableObjectConverter.cs
- SignatureToken.cs
- CodeValidator.cs
- MergeLocalizationDirectives.cs
- Table.cs
- CodeCompiler.cs
- RectIndependentAnimationStorage.cs
- TableCellCollection.cs
- Stopwatch.cs
- FormatConvertedBitmap.cs
- LostFocusEventManager.cs
- isolationinterop.cs
- SortedDictionary.cs
- XamlTypeMapper.cs
- xdrvalidator.cs
- FindCriteria11.cs
- ArcSegment.cs
- WebPartCollection.cs
- InstanceOwner.cs
- GC.cs
- InkPresenter.cs
- Visual3D.cs
- formatter.cs
- ColumnMap.cs
- TimelineCollection.cs
- ParallelTimeline.cs
- Light.cs
- PropertyChangeTracker.cs
- DispatcherTimer.cs
- ButtonBaseDesigner.cs
- EncoderFallback.cs
- XmlTypeAttribute.cs
- PageBreakRecord.cs
- Quad.cs
- Message.cs
- _CommandStream.cs
- RecordBuilder.cs
- FilterEventArgs.cs
- Item.cs
- CollectionViewProxy.cs
- Pointer.cs
- COM2Enum.cs
- EditingCommands.cs
- BaseTemplateCodeDomTreeGenerator.cs
- FontDifferentiator.cs
- SqlConnectionStringBuilder.cs