因數據源中需要顯示**等內容 所以數據列是string類型,字元串類型排序時,結果如下: 這時我們需要做一些處理,達到所需排序效果 先設置屬性 gridColumn1.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom; 然後在事件CustomC ...
gridColumn1.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
然後在事件CustomColumnSort
void gdv_CustomColumnSort(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnSortEventArgs e) { if (e.Column != null && e.Value1 != null && e.Value2 != null) { string value1 = e.Value1.ToString(); string value2 = e.Value2.ToString(); int result = Comparer.Default.Compare (ConvertToDecimal(value1, e.SortOrder), ConvertToDecimal(value2, e.SortOrder)); e.Result = result; e.Handled = true; } } private decimal ConvertToDecimal(string input, DevExpress.Data.ColumnSortOrder sortOrder) { decimal result = 0; if (string.IsNullOrWhiteSpace(input) || input.Equals("**") || input.Equals("--")) result = sortOrder == DevExpress.Data.ColumnSortOrder.Ascending ? 9999 : -9999; else decimal.TryParse(input, out result); return result; }之後又遇到一個問題:某一列根據int類型值對應顯示圖片,但是在排序時並不是按照int值排序。 經查找解決方法為設置該列的排序SortMode
gridColumn1.SortMode = DevExpress.XtraGrid.ColumnSortMode.Value;