You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			190 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //------------------------------------------------------------------------------
 | |
| // <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;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 |