2013-11-14 4 views
0

Я работаю в VS2012 в приложении C# WinForms. По умолчанию при нажатии на заголовок столбца в DataGridView он не сортирует этот столбец по возрастанию, затем вы можете снова щелкнуть заголовок столбца, чтобы отсортировать его по убыванию.datagridview отсортировано по убыванию по убыванию C# в приложении winform

так что начальный щелчок сортирует по убыванию, затем второй щелчок сортирует по возрастанию, и я не смог выяснить, как это сделать. Кто-нибудь знает?

+0

Вы хотите отсортировать его по убыванию сначала перед восходящим, когда вы сначала нажмете заголовок столбца? Это то, что вы имеете в виду? – Edper

ответ

1

Если вы хотите отсортировать его всегда в Descending порядке, попробуйте этот код:

void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{  
    dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name],ListSortDirection.Descending); 
} 

Если вы хотите чередовать и начать с нисходящее первым, а затем подъем на 2-го. Вы могли бы объявить глобальную переменную (по крайней мере, в своей форме), как:

Boolean lastSortedAscending = false; 

Тогда ваш ColumnHeaderMouseClick событие, вероятно, выглядеть следующим образом:

void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{  
    lastSortedAscending = !lastSortedAscending; 
    if (lastSortedAscending) 
     { 
     dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name],ListSortDirection.Descending); 
     } 
    else 
    { 
     dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name],ListSortDirection.Ascending); 
    } 
} 

Или без объявления глобальной переменной - вы можете также сделайте это, например:

void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{  

if (dataGridView1.SortOrder.ToString() == "Ascending") // Check if sorting is Ascending 
    { 
     dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name],ListSortDirection.Descending); 
     } 
    else 
    { 
     dataGridView1.Sort(dataGridView1.Columns[dataGridView1.SortedColumn.Name],ListSortDirection.Ascending); 
    } 
} 
Смежные вопросы