Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebControls / TableCell.cs / 2 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NonBatchDirectoryCompiler.cs
- RelationshipEndCollection.cs
- ApplicationSecurityInfo.cs
- XmlNamespaceDeclarationsAttribute.cs
- GeometryHitTestResult.cs
- BindingMAnagerBase.cs
- RsaKeyIdentifierClause.cs
- SafeNativeMethods.cs
- UITypeEditor.cs
- InputLanguageCollection.cs
- PerformanceCounterTraceRecord.cs
- SqlInternalConnectionTds.cs
- TypeContext.cs
- ToolboxService.cs
- QuotaExceededException.cs
- InputLanguage.cs
- PEFileEvidenceFactory.cs
- Descriptor.cs
- BStrWrapper.cs
- X509SecurityToken.cs
- AnnotationMap.cs
- DataIdProcessor.cs
- ToolStripDropDownClosingEventArgs.cs
- Stack.cs
- StatusBarItem.cs
- MetadataException.cs
- CacheChildrenQuery.cs
- ResourceProperty.cs
- CultureTable.cs
- CustomAttributeBuilder.cs
- BitmapEffectGroup.cs
- MLangCodePageEncoding.cs
- Bezier.cs
- ProcessThread.cs
- SymmetricCryptoHandle.cs
- RelationshipEnd.cs
- DependencyObjectType.cs
- StringSorter.cs
- NamedPipeConnectionPool.cs
- HttpProtocolReflector.cs
- EdmScalarPropertyAttribute.cs
- ImageIndexEditor.cs
- precedingsibling.cs
- Function.cs
- WindowsRebar.cs
- BindingGroup.cs
- StronglyTypedResourceBuilder.cs
- DataSourceBooleanViewSchemaConverter.cs
- PrinterUnitConvert.cs
- ServiceParser.cs
- EdmToObjectNamespaceMap.cs
- SqlTriggerAttribute.cs
- WindowsProgressbar.cs
- StatusBarAutomationPeer.cs
- MulticastOption.cs
- SignedXml.cs
- SystemIPv6InterfaceProperties.cs
- TypedOperationInfo.cs
- TypeBuilder.cs
- DictionarySectionHandler.cs
- EncryptedKey.cs
- TypeDependencyAttribute.cs
- MsmqException.cs
- CodeAccessPermission.cs
- PackWebRequest.cs
- Range.cs
- MetadataArtifactLoader.cs
- TimeSpanStorage.cs
- ListView.cs
- SqlWebEventProvider.cs
- AmbientLight.cs
- FileLoadException.cs
- ReaderWriterLockWrapper.cs
- PassportIdentity.cs
- HandlerBase.cs
- CodeSnippetExpression.cs
- BasePropertyDescriptor.cs
- WorkflowViewManager.cs
- CellPartitioner.cs
- TextChangedEventArgs.cs
- MetadataWorkspace.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- SqlFunctionAttribute.cs
- XamlReaderHelper.cs
- CompareValidator.cs
- PageThemeParser.cs
- GenericEnumerator.cs
- DbConnectionFactory.cs
- _BufferOffsetSize.cs
- _ConnectOverlappedAsyncResult.cs
- EnumUnknown.cs
- SymbolMethod.cs
- CollectionContainer.cs
- ADRoleFactory.cs
- BroadcastEventHelper.cs
- EncryptedKey.cs
- SHA512Managed.cs
- Rectangle.cs
- Calendar.cs
- ToolStripPanelRow.cs