2013-09-04 1 views
0

У меня есть вид сетки данных с колонками: IdentityNumber, Name, Date. Каждый столбец представляет различные типы значений. identityNumner - целое число, имя - строка, а дата - DateTime.сортировать столбцы с другим типом в виде сетки данных

Моя цель - щелкнуть по заголовку столбца, и сортировка будет выполнена в соответствии с приведенными выше типами. Авто сортировка без каких-либо операций сортируется по строке, как я вижу. но как я могу достичь своей цели?

Я нашел решение для своей проблемы. Пожалуйста, проверьте ответ ниже.

ответ

0

найдено решение для моей проблемы:

Внутри CTOR формы я зарегистрирован SortCompare событие вида по сетке данных:

DataGridView1.SortCompare += new DataGridViewSortCompareEventHandler(MyCustomSortFunction); 

Обычай функция Iv'e сборки:

void MyCustomSortFunction(object sender, DataGridViewSortCompareEventArgs e) 
    { 
     try 
     { 
      // checks if the column's header that was pressed is the identity number - 
      // If so , sort as integer . 

      if (e.Column.Name == "colIdentity") 
      { 
       int a = Convert.ToInt32(e.CellValue1.ToString()); 
       int b = Convert.ToInt32(e.CellValue2.ToString()); 
       e.SortResult = a.CompareTo(b); 
       e.Handled = true; 
      } 
      // checks if the column's header that was pressed is the date - 
      // If so , sort as DateTime . 

      else if (e.Column.Name == "colHDate") 
      { 
       DateTime c = Convert.ToDateTime(e.CellValue1.ToString()); 
       DateTime d = Convert.ToDateTime(e.CellValue2.ToString()); 
       e.SortResult = c.CompareTo(d); 
       e.Handled = true; 
      } 
     } 
     catch 
     { } 
    } 

Надеюсь, что мой ответ поможет кому-то :-) Шуки.