simplereportcollection.cs

来自「ASP.NET 建立和发布可自定义 Web 报表的指南」· CS 代码 · 共 103 行

CS
103
字号
using System;
using System.Collections;

namespace ASPNET.StarterKit.Reports.Components
{
	//*********************************************************************
	//
	// SimpleReportCollection Class 
	//
	// The SimpleReportCollection is a Custom SimpleReport collection used 
	// to represent a list of SimpleReport objects.
	//
	//
	//*********************************************************************
	
	public class SimpleReportCollection : ArrayList
	{	
		public enum SimpleReportFields
		{
			InitValue,
			City,
			CompanyName,
			ContactName,
			ContactTitle,
			Phone
		}
		
		public void Sort(SimpleReportFields sortField, bool isAscending)
		{
			switch (sortField) 
			{
				case SimpleReportFields.City:
					base.Sort(new CityComparer());
					break;
				case SimpleReportFields.CompanyName:
					base.Sort(new CompanyNameComparer());
					break;
				case SimpleReportFields.ContactName:
					base.Sort(new ContactNameComparer());
					break;
				case SimpleReportFields.ContactTitle:
					base.Sort(new ContactTitleComparer());
					break;
				case SimpleReportFields.Phone:
					base.Sort(new PhoneComparer());
					break;
			}

			if (!isAscending) base.Reverse();
		}

		private sealed class CityComparer : IComparer 
		{
			public int Compare(object x, object y)
			{
				SimpleReport first = (SimpleReport) x;
				SimpleReport second = (SimpleReport) y;
				return first.City.CompareTo(second.City);
			}
		}

		private sealed class CompanyNameComparer : IComparer 
		{
			public int Compare(object x, object y)
			{
				SimpleReport first = (SimpleReport) x;
				SimpleReport second = (SimpleReport) y;
				return first.CompanyName.CompareTo(second.CompanyName);
			}
		}

		private sealed class ContactNameComparer : IComparer 
		{
			public int Compare(object x, object y)
			{
				SimpleReport first = (SimpleReport) x;
				SimpleReport second = (SimpleReport) y;
				return first.ContactName.CompareTo(second.ContactName);
			}
		}

		private sealed class ContactTitleComparer : IComparer 
		{
			public int Compare(object x, object y)
			{
				SimpleReport first = (SimpleReport) x;
				SimpleReport second = (SimpleReport) y;
				return first.ContactTitle.CompareTo(second.ContactTitle);
			}
		}

		private sealed class PhoneComparer : IComparer 
		{
			public int Compare(object x, object y)
			{
				SimpleReport first = (SimpleReport) x;
				SimpleReport second = (SimpleReport) y;
				return first.Phone.CompareTo(second.Phone);
			}
		}
	}
}

⌨️ 快捷键说明

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