1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
|
//------------------------------------------------------------------------------
// <copyright file="DataListItem.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.ComponentModel;
using System.Web.UI;
using System.Web.Util;
/// <devdoc>
/// <para>Represents an item in the <see cref='System.Web.UI.WebControls.DataList'/>. </para>
/// </devdoc>
[
ToolboxItem(false)
]
public class DataListItem : WebControl, IDataItemContainer {
private int itemIndex;
private ListItemType itemType;
private object dataItem;
/// <devdoc>
/// <para>Initializes a new instance of the <see cref='System.Web.UI.WebControls.DataListItem'/> class.</para>
/// </devdoc>
public DataListItem(int itemIndex, ListItemType itemType) {
this.itemIndex = itemIndex;
this.itemType = itemType;
}
/// <devdoc>
/// <para>Represents an item in the <see cref='System.Web.UI.WebControls.DataList'/>. </para>
/// </devdoc>
public virtual object DataItem {
get {
return dataItem;
}
set {
dataItem = value;
}
}
/// <devdoc>
/// <para>Indicates the index of the item in the <see cref='System.Web.UI.WebControls.DataList'/>. This property is
/// read-only.</para>
/// </devdoc>
public virtual int ItemIndex {
get {
return itemIndex;
}
}
/// <devdoc>
/// <para>Indicates the type of the item in the <see cref='System.Web.UI.WebControls.DataList'/>.</para>
/// </devdoc>
public virtual ListItemType ItemType {
get {
return itemType;
}
}
public override bool SupportsDisabledAttribute {
get {
return RenderingCompatibility < VersionUtil.Framework40;
}
}
/// <devdoc>
/// </devdoc>
protected override Style CreateControlStyle() {
return new TableItemStyle();
}
/// <internalonly/>
/// <devdoc>
/// </devdoc>
protected override bool OnBubbleEvent(object source, EventArgs e) {
if (e is CommandEventArgs) {
DataListCommandEventArgs args = new DataListCommandEventArgs(this, source, (CommandEventArgs)e);
RaiseBubbleEvent(this, args);
return true;
}
return false;
}
/// <devdoc>
/// <para>Displays a <see cref='System.Web.UI.WebControls.DataListItem'/> on the client.</para>
/// </devdoc>
public virtual void RenderItem(HtmlTextWriter writer, bool extractRows, bool tableLayout) {
HttpContext con = Context;
if ((con != null) && con.TraceIsEnabled) {
int presize = con.Response.GetBufferedLength();
RenderItemInternal(writer, extractRows, tableLayout);
int postsize = con.Response.GetBufferedLength();
con.Trace.AddControlSize(UniqueID, postsize - presize);
}
else
RenderItemInternal(writer, extractRows, tableLayout);
}
private void RenderItemInternal(HtmlTextWriter writer, bool extractRows, bool tableLayout) {
if (extractRows == false) {
if (tableLayout) {
// in table mode, style information has gone on the containing TD
RenderContents(writer);
}
else {
// in non-table mode, the item itself is responsible for putting
// out the style information
RenderControl(writer);
}
}
else {
IEnumerator controlEnum = this.Controls.GetEnumerator();
Table templateTable = null;
bool hasControls = false;
while (controlEnum.MoveNext()) {
hasControls = true;
Control c = (Control)controlEnum.Current;
if (c is Table) {
templateTable = (Table)c;
break;
}
}
if (templateTable != null) {
IEnumerator rowEnum = templateTable.Rows.GetEnumerator();
while (rowEnum.MoveNext()) {
TableRow r = (TableRow)rowEnum.Current;
r.RenderControl(writer);
}
}
else if (hasControls) {
// there was a template, since there were controls but
// none of them was a table... so throw an exception here
throw new HttpException(SR.GetString(SR.DataList_TemplateTableNotFound,
Parent.ID, itemType.ToString()));
}
}
}
/// <internalonly/>
/// <devdoc>
/// </devdoc>
protected internal virtual void SetItemType(ListItemType itemType) {
this.itemType = itemType;
}
/// <internalonly/>
/// <devdoc>
/// </devdoc>
object IDataItemContainer.DataItem {
get {
return DataItem;
}
}
int IDataItemContainer.DataItemIndex {
get {
return ItemIndex;
}
}
int IDataItemContainer.DisplayIndex {
get {
return ItemIndex;
}
}
}
}
|