internal void Sort() { if (this.viewInfo == null || this.viewInfo.ViewTemplate == null) { return; } GridViewRowInfoComparer sortComparer = this.viewInfo.ViewTemplate.SortComparer as GridViewRowInfoComparer; if (sortComparer == null || sortComparer.Context.Count == 0) { this.sortedList = new List <GridViewRowInfo>((IEnumerable <GridViewRowInfo>) this.list); } else { this.sortedList.Sort((IComparer <GridViewRowInfo>)sortComparer); } }
public static int CompareRows( GridViewRowInfo x, GridViewRowInfo y, SortDescriptorCollection context) { GridViewDataOperation type = GridViewDataOperation.Sorting; for (int index = 0; index < context.Count; ++index) { if (context[index].PropertyIndex >= 0) { GridViewDataColumn column = x.ViewTemplate.Columns[context[index].PropertyIndex]; object xValue = column.GetValue(x, type); object yValue = column.GetValue(y, type); if (column.UseDataTypeConverterWhenSorting && column.DataTypeConverter != null && column.DataTypeConverter.CanConvertTo((ITypeDescriptorContext)column, column.DataType)) { GridViewComboBoxColumn viewComboBoxColumn = column as GridViewComboBoxColumn; if (viewComboBoxColumn == null || !viewComboBoxColumn.DisplayMemberSort) { CultureInfo formatterCulture = GridViewRowInfoComparer.GetFormatterCulture((IFormatProvider)column.FormatInfo); xValue = column.DataTypeConverter.ConvertTo((ITypeDescriptorContext)column, formatterCulture, xValue, column.DataType); yValue = column.DataTypeConverter.ConvertTo((ITypeDescriptorContext)column, formatterCulture, yValue, column.DataType); } } GridViewRowInfoComparer.GetBlobData(ref xValue, ref yValue); int num = !(xValue is IComparable) || yValue == null || (object)yValue.GetType() != (object)xValue.GetType() ? DataUtils.CompareNulls(xValue, yValue) : ((IComparable)xValue).CompareTo(yValue); if (num != 0) { if (context[index].Direction == ListSortDirection.Descending) { return(-num); } return(num); } } } return(0); }
public virtual int Compare(GridViewRowInfo x, GridViewRowInfo y) { return(GridViewRowInfoComparer.CompareRows(x, y, this.sortContext)); }