tabularreportcollection.cs

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

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

namespace ASPNET.StarterKit.Reports.Components
{
	//*********************************************************************
	//
	// TabularReportCollection Class 
	//
	// The TabularReportCollection is a Custom TabularReport collection used 
	// to represent a list of tabular report data item.
	//
	//
	//*********************************************************************

	public class TabularReportCollection : ArrayList
	{
		public enum TabularReportFields
		{
			InitValue,
			ProductName,
			UnitsInStock,
			UnitPrice
		}

		public void Sort(TabularReportFields sortField, bool isAscending)
		{
			switch (sortField) 
			{
				case TabularReportFields.ProductName:
					base.Sort(new ProductNameComparer());
					break;
				case TabularReportFields.UnitsInStock:
					base.Sort(new UnitsInStockComparer());
					break;
				case TabularReportFields.UnitPrice:
					base.Sort(new UnitPriceComparer());
					break;
			}

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

		private sealed class ProductNameComparer : IComparer 
		{
			public int Compare(object x, object y)
			{
				TabularReport first = (TabularReport) x;
				TabularReport second = (TabularReport) y;
				return first.ProductName.CompareTo(second.ProductName);
			}
		}

		private sealed class UnitsInStockComparer : IComparer 
		{
			public int Compare(object x, object y)
			{
				TabularReport first = (TabularReport) x;
				TabularReport second = (TabularReport) y;
				return first.UnitsInStock.CompareTo(second.UnitsInStock);
			}
		}

		private sealed class UnitPriceComparer : IComparer 
		{
			public int Compare(object x, object y)
			{
				TabularReport first = (TabularReport) x;
				TabularReport second = (TabularReport) y;
				return first.UnitPrice.CompareTo(second.UnitPrice);
			}
		}
	}
}

⌨️ 快捷键说明

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