DataGridViewColumn initial sort direction

匿名 (未验证) 提交于 2019-12-03 08:44:33

问题:

I'm working in VS2008 on a C# WinForms app. By default when clicking on a column header in a DataGridView it sorts that column Ascending, you can then click on the column header again to sort it Descending.

I am trying to reverse this, so the initial click sorts Descending then the second click sorts Ascending and I haven't been able to figure out how to do this. Does anyone know?

Thanks

回答1:

You can set the HeaderCell SortGlyphDirection to Ascending, and then the next click will give you the descending order. The default is none.

dataGridView1.Sort(Column1, ListSortDirection.Ascending); this.Column1.HeaderCell.SortGlyphDirection = System.Windows.Forms.SortOrder.Ascending; 


回答2:

foreach (DataGridViewColumn column in DataGridView1.Columns) {     column.SortMode = DataGridViewColumnSortMode.Programmatic; } 

and

private void DataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {     var column = DataGridView1.Columns[e.ColumnIndex];     if (column.SortMode != DataGridViewColumnSortMode.Programmatic)         return;      var sortGlyph = column.HeaderCell.SortGlyphDirection;     switch (sortGlyph)     {         case SortOrder.None:         case SortOrder.Ascending:             DataGridView1.Sort(column, ListSortDirection.Descending);             column.HeaderCell.SortGlyphDirection = SortOrder.Descending;             break;         case SortOrder.Descending:             DataGridView1.Sort(column, ListSortDirection.Ascending);             column.HeaderCell.SortGlyphDirection = SortOrder.Ascending;             break;     } } 


回答3:

I suggest below code

MyDGV.Sort(MyDGV.Columns[column_Index], ListSortDirection.Ascending); 


回答4:

Take a look at DataGridView.SortCompare. See slightly modified version of the msdn example below:

private void dataGridView1_SortCompare(object sender,         DataGridViewSortCompareEventArgs e)     {         // Try to sort based on the cells in the current column.         e.SortResult = System.String.Compare(             e.CellValue2.ToString(), e.CellValue1.ToString()); // descending sort          e.Handled = true;     } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!