⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 repeater.cs

📁 不错的人事管理系统
💻 CS
字号:
using System;
using System.Web.UI;
using System.Collections;
using System.ComponentModel;

namespace System.Web.UI.WebControls
{
	/// <summary>
	/// Summary description for Repeater.
	/// </summary>
	//.custom instance void System.Web.UI.PersistChildrenAttribute
	//	.custom instance void [System]System.ComponentModel.DefaultEventAttribute
	//	.custom instance void [System]System.ComponentModel.DefaultPropertyAttribute
	//	.custom instance void [System]System.ComponentModel.DesignerAttribute
	//	.custom instance void System.Web.UI.ParseChildrenAttribute
	public class Repeater : Control,INamingContainer
	{
		static internal string ItemCountViewStateKey = "_!ItemCount";
		private static object EventItemCreated;
		private static object EventItemDataBound;
		private static object EventItemCommand;
		private object dataSource;
		private System.Web.UI.ITemplate headerTemplate;
		private System.Web.UI.ITemplate footerTemplate;
		private System.Web.UI.ITemplate itemTemplate;
		private System.Web.UI.ITemplate alternatingItemTemplate;
		private System.Web.UI.ITemplate separatorTemplate;
		private System.Collections.ArrayList itemsArray;
		private System.Web.UI.WebControls.RepeaterItemCollection itemsCollection;

		static Repeater() 
		{
			Repeater.EventItemCreated = new Object();
			Repeater.EventItemDataBound = new Object();
			Repeater.EventItemCommand = new Object();
		}

		public Repeater() : base() 
		{
		}

		protected virtual void CreateChildControls() 
		{
			this.Controls.Clear();
			if (this.ViewState["_!ItemCount"] != null)
				this.CreateControlHierarchy(false);
			else
				this.itemsArray = new ArrayList();
			this.ClearChildViewState();
		}

		protected virtual void CreateControlHierarchy(bool useDataSource) 
		{
			IEnumerable local0;
			int local1;
			ICollection local2;
			RepeaterItem local3;
			ListItemType local4;
			int local5;
			bool local6;
			object local7;
			IEnumerator local8;
			IDisposable local9;

			local0 = null;
			local1 = -1;
			if (this.itemsArray != null)
				this.itemsArray.Clear();
			else
				this.itemsArray = new ArrayList();
			if (!(useDataSource)) 
			{
				local1 = (Int32) this.ViewState["_!ItemCount"];
				if (local1 == -1)
					goto i0;
				local0 = new DummyDataSource(local1);
				this.itemsArray.Capacity = local1;
			}
			else 
			{
				local0 = System.Web.UI.DataSourceHelper.GetResolvedDataSource(this.DataSource, this.DataMember);
				local2 = local0 as ICollection;
				if (local2 != null)
					this.itemsArray.Capacity = local2.Count;
			}
			i0: if (local0 != null) 
				{
//					this.Controls;
					local5 = 0;
					local6 = this.separatorTemplate != null;
					local1 = 0;
					if (this.headerTemplate != null)
						this.CreateItem(-1, 0, useDataSource, null);
					local8 = local0.GetEnumerator();
					try 
					{
						while (local8.MoveNext()) 
						{
							local7 = local8.Current;
							if (local6 && local1 > 0)
								this.CreateItem(local5 - 1, ListItemType.Separator, useDataSource, null);
							if (local5 % 2 != 0)
							{
								//								goto i-1;
							}
							local4 = ListItemType.Item;
							local3 = this.CreateItem(local5, local4, useDataSource, local7);
							this.itemsArray.Add(local3);
							local1++;
							local5++;
						}
					}
					finally 
					{
						local9 = local8 as IDisposable;
						if (local9 == null)
						{
							//							goto i-1;
						}
						local9.Dispose();
					}
					if (this.footerTemplate != null)
						this.CreateItem(-1, ListItemType.Footer, useDataSource, null);
				}
			if (useDataSource) 
			{
				if (local0 == null)
				{
					//					goto i-1;
				}
//				"_!ItemCount"[-1]= local1;
			}
		}

		private RepeaterItem CreateItem(int itemIndex, ListItemType itemType, bool dataBind, object dataItem) 
		{
			RepeaterItem local0;
			RepeaterItemEventArgs local1;

			local0 = this.CreateItem(itemIndex, itemType);
			local1 = new RepeaterItemEventArgs(local0);
			this.InitializeItem(local0);
			if (dataBind)
				local0.DataItem = dataItem;
			this.OnItemCreated(local1);
			this.Controls.Add(local0);
			if (dataBind) 
			{
				local0.DataBind();
				this.OnItemDataBound(local1);
				local0.DataItem = null;
			}
			return local0;
		}

		protected virtual RepeaterItem CreateItem(int itemIndex, ListItemType itemType) 
		{
			return new RepeaterItem(itemIndex, itemType);
		}

		public virtual void DataBind() 
		{
			this.OnDataBinding(System.EventArgs.Empty);
		}

		protected virtual void InitializeItem(RepeaterItem item) 
		{
			ITemplate local0;
			ListItemType local1;

			local0 = null;
			local1 = item.ItemType;
			switch (local1) 
			{
				case 0:
					local0 = this.headerTemplate;
					break;
					break;
				case ListItemType.Footer:
					local0 = this.footerTemplate;
					break;
					break;
				case ListItemType.Item:
					i1: local0 = this.itemTemplate;
					break;
					break;
				case ListItemType.AlternatingItem:
					local0 = this.alternatingItemTemplate;
					if (local0 != null)
						break;
					goto i1;
					break;
				case ListItemType.Separator:
					local0 = this.separatorTemplate;
					break;
			}
			if (local0 != null)
				local0.InstantiateIn(item);
		}

		protected virtual bool OnBubbleEvent(object sender, EventArgs e) 
		{
			bool local0;

			local0 = false;
			if (e as RepeaterCommandEventArgs != null) 
			{
				this.OnItemCommand((RepeaterCommandEventArgs) e);
				local0 = true;
			}
			return local0;
		}

		protected virtual void OnDataBinding(EventArgs e) 
		{
			this.OnDataBinding(e);
			this.Controls.Clear();
			this.ClearChildViewState();
			this.CreateControlHierarchy(true);
			this.ChildControlsCreated = true;
		}

		protected virtual void OnItemCommand(RepeaterCommandEventArgs e) 
		{
			RepeaterCommandEventHandler local0;

			local0 = (RepeaterCommandEventHandler) this.Events[Repeater.EventItemCommand];
			if (local0 != null)
			{
				//				local0.Invoke(this, e);
			}
		}

		protected virtual void OnItemCreated(RepeaterItemEventArgs e) 
		{
			RepeaterItemEventHandler local0;

			local0 = (RepeaterItemEventHandler) this.Events[Repeater.EventItemCreated];
			if (local0 != null)
			{
				//				local0.Invoke(this, e);
			}
		}

		protected virtual void OnItemDataBound(RepeaterItemEventArgs e) 
		{
			RepeaterItemEventHandler local0;

			local0 = (RepeaterItemEventHandler) this.Events[Repeater.EventItemDataBound];
			if (local0 != null)
			{
//				local0.Invoke(this, e);
			}
		}

		public event RepeaterCommandEventHandler ItemCommand
		{
			add
			{
				this.Events.AddHandler(Repeater.EventItemCommand, value);
			}
			remove
			{
				this.Events.RemoveHandler(Repeater.EventItemCommand, value);
			}
		}

		public event RepeaterItemEventHandler ItemCreated
		{
			add
			{
				this.Events.AddHandler(Repeater.EventItemCreated, value);
			}
			remove
			{
				this.Events.RemoveHandler(Repeater.EventItemCreated, value);
			}
		}

		public event RepeaterItemEventHandler ItemDataBound
		{
			add
			{
				this.Events.AddHandler(Repeater.EventItemDataBound, value);
			}
			remove
			{
				this.Events.RemoveHandler(Repeater.EventItemDataBound, value);
			}
		}

		public virtual ITemplate AlternatingItemTemplate 
		{
			get
			{
				return this.alternatingItemTemplate;
			}
			set
			{
				this.alternatingItemTemplate = value;
			}
		}

		public virtual ControlCollection Controls 
		{
			get
			{
				this.EnsureChildControls();
				return this.Controls;
			}
		}

		public virtual string DataMember 
		{
			get
			{
				object local0;

				local0 = this.ViewState["DataMember"];
				if (local0 != null)
					return (String) local0;
				return System.String.Empty;
			}
			set
			{
				this.ViewState["DataMember"]= value;
			}
		}

		public virtual object DataSource 
		{
			get
			{
				return this.dataSource;
			}
			set
			{
				if (value != null && value as IListSource == null)
					if (value as IEnumerable == null)
						goto i2;
				this.dataSource = value;
				return;
				i2: throw new ArgumentException(System.Web.HttpRuntime.FormatResourceString("Invalid_DataSource_Type", this.ID));
			}
		}

		public virtual ITemplate FooterTemplate 
		{
			get
			{
				return this.footerTemplate;
			}
			set
			{
				this.footerTemplate = value;
			}
		}

		public virtual ITemplate HeaderTemplate 
		{
			get
			{
				return this.headerTemplate;
			}
			set
			{
				this.headerTemplate = value;
			}
		}

		public virtual RepeaterItemCollection Items 
		{
			get
			{
				if (this.itemsCollection == null) 
				{
					if (this.itemsArray == null)
						this.EnsureChildControls();
					this.itemsCollection = new RepeaterItemCollection(this.itemsArray);
				}
				return this.itemsCollection;
			}
		}

		public virtual ITemplate ItemTemplate 
		{
			get
			{
				return this.itemTemplate;
			}
			set
			{
				this.itemTemplate = value;
			}
		}

		public virtual ITemplate SeparatorTemplate 
		{
			get
			{
				return this.separatorTemplate;
			}
			set
			{
				this.separatorTemplate = value;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -