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

📄 groupcomparer.cs

📁 c#源代码
💻 CS
字号:
//------------------------------------------------------------------------------
// <autogenerated>
//     This code was generated by a tool.
//     Runtime Version: 1.1.4322.2032
//
//     Changes to this file may cause incorrect behavior and will be lost if 
//     the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------
using System;
using System.Text;
using System.ComponentModel;
using SharpReportCore;
	
	
/// <summary>
/// TODO - Add class summary
/// </summary>
/// <remarks>
/// 	created by - Forstmeier Helmut
/// 	created on - 27.11.2005 14:59:28
/// </remarks>
namespace SharpReportCore {
	public class GroupComparer : SharpReportCore.BaseComparer{
		
		public GroupComparer(ColumnCollection owner, int listIndex, object[] values):
			base(owner,listIndex,values) {
		}
		
		internal int CompareTo(GroupComparer value)
		{
			// we shouldn't get to this point
			if (value == null)
				throw new ArgumentNullException("value");
			
			if (value.ObjectArray.Length != base.ObjectArray.Length)
				throw new InvalidOperationException("Differnet size of compare data");
			
			int compare = 0;
			
			for (int index = 0; index < base.ObjectArray.Length; index++)
			{
				object leftValue = base.ObjectArray[index];
				object rightValue = value.ObjectArray[index];
				// Indizes sind hier deckungsgleich
				
				GroupColumn groupColumn = (GroupColumn)base.ColumnCollection[index];

				bool descending = (groupColumn.SortDirection == ListSortDirection.Descending);
				
				// null means equl
				if (leftValue == null || leftValue == System.DBNull.Value)
				{
					if (rightValue != null && rightValue != System.DBNull.Value)
					{
						return (descending) ? 1 : -1;
					}
					
					// Beide Null
					continue;
				}
				
				if (rightValue == null || rightValue == System.DBNull.Value)
				{
					return (descending) ? -1 : 1;
				}
				
				
				// TODO: In vertrglichen Typ wandeln (z. B: Int32 -> Int64)
				
				if (leftValue.GetType() != rightValue.GetType())
					throw new InvalidOperationException("Compare of different types is not supported");
				
				if (leftValue.GetType() == typeof(string))
				{
					compare = String.Compare((string)leftValue, (string)rightValue,
					                         !groupColumn.CaseSensitive, base.ColumnCollection.Culture);
				}
				else
				{
					compare = ((IComparable)leftValue).CompareTo(rightValue);
				}
				
				// Sind ungleich, tauschen je nach Richtung
				if (compare != 0)
				{
					return (descending) ? -compare : compare;
				}
			}
			
			// Gleich Werte, dann Index bercksichtigen
			return this.ListIndex.CompareTo(value.ListIndex);
		}
		
		
		
		public override int CompareTo(object value) {
			 base.CompareTo(value);
			return this.CompareTo((GroupComparer)value);
		}
		
		
		
	}
}

⌨️ 快捷键说明

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