在对表格数据源为字符串类型的列排序时,为了实现按照值大小进行排序,需要进行以下处理:
先设置该列SortMode属性为自定义属性
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 = ;
if (string.IsNullOrWhiteSpace(input) || input.Equals("**") || input.Equals("--"))
result = sortOrder == DevExpress.Data.ColumnSortOrder.Ascending ? : -;
else
decimal.TryParse(input, out result);
return result;
}
相关问题:
1)某一列根据int类型值对应显示图片,但是在排序时并不是按照int值排序。
设置该列的SortMode属性为按照值排序
gridColumn1.SortMode = DevExpress.XtraGrid.ColumnSortMode.Value;