public bool Sort(RadSortOrder sortOrder, bool multiSortMode) { if (!this.CanSort || this.ownerTemplate == null) { return(false); } SortDescriptor descriptor = new SortDescriptor(this.Name, GridViewHelper.GetSortDirection(sortOrder)); SortDescriptorCollection sortDescriptors = this.ownerTemplate.SortDescriptors; bool flag = !multiSortMode && sortDescriptors.Count > 1; if (flag) { if (sortOrder == RadSortOrder.None) { descriptor = (SortDescriptor)null; } if (this.RaiseSortingChanging(descriptor)) { return(false); } sortDescriptors.BeginUpdate(); sortDescriptors.Clear(); } int index = sortDescriptors.IndexOf(this.Name); if (index >= 0) { if (sortOrder == RadSortOrder.None) { sortDescriptors.RemoveAt(index); return(true); } if (sortOrder == GridViewHelper.GetSortDirection(sortDescriptors[index].Direction)) { return(false); } sortDescriptors[index].Direction = GridViewHelper.GetSortDirection(sortOrder); return(true); } if (sortOrder == RadSortOrder.None) { if (flag) { sortDescriptors.EndUpdate(); } return(false); } if (!multiSortMode && sortDescriptors.Count == 1) { sortDescriptors[0] = descriptor; } else { sortDescriptors.Add(descriptor); } if (flag) { sortDescriptors.EndUpdate(); } return(true); }