TableCell.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / UI / WebControls / TableCell.cs / 1 / TableCell.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.UI.WebControls { 
 
    using System;
    using System.Collections; 
    using System.Globalization;
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.Text; 
    using System.Web;
    using System.Web.UI; 
    using System.Security.Permissions; 

 
    /// 
    /// Interacts with the parser to build a  control.
    /// 
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    public class TableCellControlBuilder : ControlBuilder { 
 

        ///  
        /// 
        ///    Specifies whether white space literals are allowed.
        /// 
        public override bool AllowWhitespaceLiterals() { 
            return false;
        } 
    } 

 

    /// 
    ///    Encapsulates a cell within a table.
    ///  
    [
    Bindable(false), 
    ControlBuilderAttribute(typeof(TableCellControlBuilder)), 
    DefaultProperty("Text"),
    ParseChildren(false), 
    ToolboxItem(false)
    ]
    [Designer("System.Web.UI.Design.WebControls.PreviewControlDesigner, " + AssemblyRef.SystemDesign)]
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    public class TableCell : WebControl { 
 
        private bool _textSetByAddParsedSubObject = false;
 
        /// 
        ///    
        ///       Initializes a new instance of the  class.
        ///     
        /// 
        public TableCell() : this(HtmlTextWriterTag.Td) { 
        } 

 
        /// 
        /// 
        internal TableCell(HtmlTextWriterTag tagKey) : base(tagKey) {
            PreventAutoID(); 
        }
 
 
        /// 
        ///     
        ///     Contains a list of categories associated with the table header (read by screen readers). The categories can be any string values. The categories are rendered as a comma delimited list using the HTML axis attribute.
        ///    
        /// 
        [ 
        DefaultValue(null),
        TypeConverterAttribute(typeof(StringArrayConverter)), 
        WebCategory("Accessibility"), 
        WebSysDescription(SR.TableCell_AssociatedHeaderCellID)
        ] 
        public virtual string[] AssociatedHeaderCellID {
            get {
                object x = ViewState["AssociatedHeaderCellID"];
                return (x != null) ? (string[])((string[])x).Clone() : new string[0]; 
            }
            set { 
                if (value != null) { 
                    ViewState["AssociatedHeaderCellID"] = (string[])value.Clone();
                } 
                else {
                    ViewState["AssociatedHeaderCellID"] = null;
                }
            } 
        }
 
 
        /// 
        ///    Gets or sets the number 
        ///       of columns this table cell stretches horizontally.
        /// 
        [
        WebCategory("Appearance"), 
        DefaultValue(0),
        WebSysDescription(SR.TableCell_ColumnSpan) 
        ] 
        public virtual int ColumnSpan {
            get { 
                object o = ViewState["ColumnSpan"];
                return((o == null) ? 0 : (int)o);
            }
            set { 
                if (value < 0) {
                    throw new ArgumentOutOfRangeException("value"); 
                } 
                ViewState["ColumnSpan"] = value;
            } 
        }


        ///  
        ///    Gets or sets
        ///       the horizontal alignment of the content within the cell. 
        ///  
        [
        WebCategory("Layout"), 
        DefaultValue(HorizontalAlign.NotSet),
        WebSysDescription(SR.TableItem_HorizontalAlign)
        ]
        public virtual HorizontalAlign HorizontalAlign { 
            get {
                if (ControlStyleCreated == false) { 
                    return HorizontalAlign.NotSet; 
                }
                return ((TableItemStyle)ControlStyle).HorizontalAlign; 
            }
            set {
                ((TableItemStyle)ControlStyle).HorizontalAlign = value;
            } 
        }
 
 
        /// 
        ///    Gets or sets the 
        ///       number of rows this table cell stretches vertically.
        /// 
        [
        WebCategory("Layout"), 
        DefaultValue(0),
        WebSysDescription(SR.TableCell_RowSpan) 
        ] 
        public virtual int RowSpan {
            get { 
                object o = ViewState["RowSpan"];
                return((o == null) ? 0 : (int)o);
            }
            set { 
                if (value < 0) {
                    throw new ArgumentOutOfRangeException("value"); 
                } 
                ViewState["RowSpan"] = value;
            } 
        }


        ///  
        ///    Gets
        ///       or sets the text contained in the cell. 
        ///  
        [
        Localizable(true), 
        WebCategory("Appearance"),
        DefaultValue(""),
        PersistenceMode(PersistenceMode.InnerDefaultProperty),
        WebSysDescription(SR.TableCell_Text) 
        ]
        public virtual string Text { 
            get { 
                object o = ViewState["Text"];
                return((o == null) ? String.Empty : (string)o); 
            }
            set {
                if (HasControls()) {
                    Controls.Clear(); 
                }
                ViewState["Text"] = value; 
            } 
        }
 

        /// 
        ///    Gets or sets the vertical alignment of the content within the cell.
        ///  
        [
        WebCategory("Layout"), 
        DefaultValue(VerticalAlign.NotSet), 
        WebSysDescription(SR.TableItem_VerticalAlign)
        ] 
        public virtual VerticalAlign VerticalAlign {
            get {
                if (ControlStyleCreated == false) {
                    return VerticalAlign.NotSet; 
                }
                return ((TableItemStyle)ControlStyle).VerticalAlign; 
            } 
            set {
                ((TableItemStyle)ControlStyle).VerticalAlign = value; 
            }
        }

 
        /// 
        ///     
        ///       Gets or sets 
        ///       whether the cell content wraps within the cell.
        ///     
        /// 
        [
        WebCategory("Layout"),
        DefaultValue(true), 
        WebSysDescription(SR.TableCell_Wrap)
        ] 
        public virtual bool Wrap { 
            get {
                if (ControlStyleCreated == false) { 
                    return true;
                }
                return ((TableItemStyle)ControlStyle).Wrap;
            } 
            set {
                ((TableItemStyle)ControlStyle).Wrap = value; 
            } 
        }
 

        /// 
        /// 
        ///    A protected method. Adds information about the column 
        ///       span and row span to the list of attributes to render.
        ///  
        protected override void AddAttributesToRender(HtmlTextWriter writer) { 
            base.AddAttributesToRender(writer);
 
            int span = ColumnSpan;
            if (span > 0)
                writer.AddAttribute(HtmlTextWriterAttribute.Colspan, span.ToString(NumberFormatInfo.InvariantInfo));
 
            span = RowSpan;
            if (span > 0) 
                writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, span.ToString(NumberFormatInfo.InvariantInfo)); 

            string[] arr = AssociatedHeaderCellID; 
            if (arr.Length > 0) {
                bool first = true;
                StringBuilder builder = new StringBuilder();
                Control namingContainer = NamingContainer; 
                foreach (string id in arr) {
                    TableHeaderCell headerCell = namingContainer.FindControl(id) as TableHeaderCell; 
                    if (headerCell == null) { 
                        throw new HttpException(SR.GetString(SR.TableCell_AssociatedHeaderCellNotFound, id));
                    } 
                    if (first) {
                        first = false;
                    }
                    else { 
                        // AssociatedHeaderCellID was seperated by "," instead of " ". (DevDiv Bugs 159670)
                        builder.Append(" "); 
                    } 
                    builder.Append(headerCell.ClientID);
                } 
                string val = builder.ToString();
                if (!String.IsNullOrEmpty(val)) {
                    writer.AddAttribute(HtmlTextWriterAttribute.Headers, val);
                } 
            }
        } 
 

        ///  
        /// 
        protected override void AddParsedSubObject(object obj) {
            if (HasControls()) {
                base.AddParsedSubObject(obj); 
            }
            else { 
                if (obj is LiteralControl) { 
                    // If we have multiple LiteralControls added here (as would happen if there were a code block
                    // at design time) we don't want to overwrite Text with the last LiteralControl's Text.  Just 
                    // concatenate their content.  However, if Text was set by the property or was in ViewState,
                    // we want to overwrite it.
                    if (_textSetByAddParsedSubObject) {
                        Text += ((LiteralControl)obj).Text; 
                    }
                    else { 
                        Text = ((LiteralControl)obj).Text; 
                    }
                    _textSetByAddParsedSubObject = true; 
                }
                else {
                    string currentText = Text;
                    if (currentText.Length != 0) { 
                        Text = String.Empty;
                        base.AddParsedSubObject(new LiteralControl(currentText)); 
                    } 
                    base.AddParsedSubObject(obj);
                } 
            }
        }

 
        /// 
        ///  
        ///    A protected 
        ///       method. Creates a table item control
        ///       style. 
        /// 
        protected override Style CreateControlStyle() {
            return new TableItemStyle(ViewState);
        } 

 
        ///  
        /// 
        ///    A protected method. 
        /// 
        protected internal override void RenderContents(HtmlTextWriter writer) {
            // We can't use HasControls() here, because we may have a compiled render method (ASURT 94127)
            if (HasRenderingData()) { 
                base.RenderContents(writer);
            } 
            else { 
                writer.Write(Text);
            } 
        }
    }
}
 

// 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.Collections; 
    using System.Globalization;
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.Text; 
    using System.Web;
    using System.Web.UI; 
    using System.Security.Permissions; 

 
    /// 
    /// Interacts with the parser to build a  control.
    /// 
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    public class TableCellControlBuilder : ControlBuilder { 
 

        ///  
        /// 
        ///    Specifies whether white space literals are allowed.
        /// 
        public override bool AllowWhitespaceLiterals() { 
            return false;
        } 
    } 

 

    /// 
    ///    Encapsulates a cell within a table.
    ///  
    [
    Bindable(false), 
    ControlBuilderAttribute(typeof(TableCellControlBuilder)), 
    DefaultProperty("Text"),
    ParseChildren(false), 
    ToolboxItem(false)
    ]
    [Designer("System.Web.UI.Design.WebControls.PreviewControlDesigner, " + AssemblyRef.SystemDesign)]
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    public class TableCell : WebControl { 
 
        private bool _textSetByAddParsedSubObject = false;
 
        /// 
        ///    
        ///       Initializes a new instance of the  class.
        ///     
        /// 
        public TableCell() : this(HtmlTextWriterTag.Td) { 
        } 

 
        /// 
        /// 
        internal TableCell(HtmlTextWriterTag tagKey) : base(tagKey) {
            PreventAutoID(); 
        }
 
 
        /// 
        ///     
        ///     Contains a list of categories associated with the table header (read by screen readers). The categories can be any string values. The categories are rendered as a comma delimited list using the HTML axis attribute.
        ///    
        /// 
        [ 
        DefaultValue(null),
        TypeConverterAttribute(typeof(StringArrayConverter)), 
        WebCategory("Accessibility"), 
        WebSysDescription(SR.TableCell_AssociatedHeaderCellID)
        ] 
        public virtual string[] AssociatedHeaderCellID {
            get {
                object x = ViewState["AssociatedHeaderCellID"];
                return (x != null) ? (string[])((string[])x).Clone() : new string[0]; 
            }
            set { 
                if (value != null) { 
                    ViewState["AssociatedHeaderCellID"] = (string[])value.Clone();
                } 
                else {
                    ViewState["AssociatedHeaderCellID"] = null;
                }
            } 
        }
 
 
        /// 
        ///    Gets or sets the number 
        ///       of columns this table cell stretches horizontally.
        /// 
        [
        WebCategory("Appearance"), 
        DefaultValue(0),
        WebSysDescription(SR.TableCell_ColumnSpan) 
        ] 
        public virtual int ColumnSpan {
            get { 
                object o = ViewState["ColumnSpan"];
                return((o == null) ? 0 : (int)o);
            }
            set { 
                if (value < 0) {
                    throw new ArgumentOutOfRangeException("value"); 
                } 
                ViewState["ColumnSpan"] = value;
            } 
        }


        ///  
        ///    Gets or sets
        ///       the horizontal alignment of the content within the cell. 
        ///  
        [
        WebCategory("Layout"), 
        DefaultValue(HorizontalAlign.NotSet),
        WebSysDescription(SR.TableItem_HorizontalAlign)
        ]
        public virtual HorizontalAlign HorizontalAlign { 
            get {
                if (ControlStyleCreated == false) { 
                    return HorizontalAlign.NotSet; 
                }
                return ((TableItemStyle)ControlStyle).HorizontalAlign; 
            }
            set {
                ((TableItemStyle)ControlStyle).HorizontalAlign = value;
            } 
        }
 
 
        /// 
        ///    Gets or sets the 
        ///       number of rows this table cell stretches vertically.
        /// 
        [
        WebCategory("Layout"), 
        DefaultValue(0),
        WebSysDescription(SR.TableCell_RowSpan) 
        ] 
        public virtual int RowSpan {
            get { 
                object o = ViewState["RowSpan"];
                return((o == null) ? 0 : (int)o);
            }
            set { 
                if (value < 0) {
                    throw new ArgumentOutOfRangeException("value"); 
                } 
                ViewState["RowSpan"] = value;
            } 
        }


        ///  
        ///    Gets
        ///       or sets the text contained in the cell. 
        ///  
        [
        Localizable(true), 
        WebCategory("Appearance"),
        DefaultValue(""),
        PersistenceMode(PersistenceMode.InnerDefaultProperty),
        WebSysDescription(SR.TableCell_Text) 
        ]
        public virtual string Text { 
            get { 
                object o = ViewState["Text"];
                return((o == null) ? String.Empty : (string)o); 
            }
            set {
                if (HasControls()) {
                    Controls.Clear(); 
                }
                ViewState["Text"] = value; 
            } 
        }
 

        /// 
        ///    Gets or sets the vertical alignment of the content within the cell.
        ///  
        [
        WebCategory("Layout"), 
        DefaultValue(VerticalAlign.NotSet), 
        WebSysDescription(SR.TableItem_VerticalAlign)
        ] 
        public virtual VerticalAlign VerticalAlign {
            get {
                if (ControlStyleCreated == false) {
                    return VerticalAlign.NotSet; 
                }
                return ((TableItemStyle)ControlStyle).VerticalAlign; 
            } 
            set {
                ((TableItemStyle)ControlStyle).VerticalAlign = value; 
            }
        }

 
        /// 
        ///     
        ///       Gets or sets 
        ///       whether the cell content wraps within the cell.
        ///     
        /// 
        [
        WebCategory("Layout"),
        DefaultValue(true), 
        WebSysDescription(SR.TableCell_Wrap)
        ] 
        public virtual bool Wrap { 
            get {
                if (ControlStyleCreated == false) { 
                    return true;
                }
                return ((TableItemStyle)ControlStyle).Wrap;
            } 
            set {
                ((TableItemStyle)ControlStyle).Wrap = value; 
            } 
        }
 

        /// 
        /// 
        ///    A protected method. Adds information about the column 
        ///       span and row span to the list of attributes to render.
        ///  
        protected override void AddAttributesToRender(HtmlTextWriter writer) { 
            base.AddAttributesToRender(writer);
 
            int span = ColumnSpan;
            if (span > 0)
                writer.AddAttribute(HtmlTextWriterAttribute.Colspan, span.ToString(NumberFormatInfo.InvariantInfo));
 
            span = RowSpan;
            if (span > 0) 
                writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, span.ToString(NumberFormatInfo.InvariantInfo)); 

            string[] arr = AssociatedHeaderCellID; 
            if (arr.Length > 0) {
                bool first = true;
                StringBuilder builder = new StringBuilder();
                Control namingContainer = NamingContainer; 
                foreach (string id in arr) {
                    TableHeaderCell headerCell = namingContainer.FindControl(id) as TableHeaderCell; 
                    if (headerCell == null) { 
                        throw new HttpException(SR.GetString(SR.TableCell_AssociatedHeaderCellNotFound, id));
                    } 
                    if (first) {
                        first = false;
                    }
                    else { 
                        // AssociatedHeaderCellID was seperated by "," instead of " ". (DevDiv Bugs 159670)
                        builder.Append(" "); 
                    } 
                    builder.Append(headerCell.ClientID);
                } 
                string val = builder.ToString();
                if (!String.IsNullOrEmpty(val)) {
                    writer.AddAttribute(HtmlTextWriterAttribute.Headers, val);
                } 
            }
        } 
 

        ///  
        /// 
        protected override void AddParsedSubObject(object obj) {
            if (HasControls()) {
                base.AddParsedSubObject(obj); 
            }
            else { 
                if (obj is LiteralControl) { 
                    // If we have multiple LiteralControls added here (as would happen if there were a code block
                    // at design time) we don't want to overwrite Text with the last LiteralControl's Text.  Just 
                    // concatenate their content.  However, if Text was set by the property or was in ViewState,
                    // we want to overwrite it.
                    if (_textSetByAddParsedSubObject) {
                        Text += ((LiteralControl)obj).Text; 
                    }
                    else { 
                        Text = ((LiteralControl)obj).Text; 
                    }
                    _textSetByAddParsedSubObject = true; 
                }
                else {
                    string currentText = Text;
                    if (currentText.Length != 0) { 
                        Text = String.Empty;
                        base.AddParsedSubObject(new LiteralControl(currentText)); 
                    } 
                    base.AddParsedSubObject(obj);
                } 
            }
        }

 
        /// 
        ///  
        ///    A protected 
        ///       method. Creates a table item control
        ///       style. 
        /// 
        protected override Style CreateControlStyle() {
            return new TableItemStyle(ViewState);
        } 

 
        ///  
        /// 
        ///    A protected method. 
        /// 
        protected internal override void RenderContents(HtmlTextWriter writer) {
            // We can't use HasControls() here, because we may have a compiled render method (ASURT 94127)
            if (HasRenderingData()) { 
                base.RenderContents(writer);
            } 
            else { 
                writer.Write(Text);
            } 
        }
    }
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK