服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - DataGridView实现点击列头升序和降序排序

DataGridView实现点击列头升序和降序排序

2023-02-16 14:38.NET开发菜鸟 C#

这篇文章介绍了DataGridView实现点击列头升序和降序排序的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

DataGridView 列有三种排序模式。每一列的排序模式是通过该列的 SortMode 属性指定的,该属性可以设置为以下的 DataGridViewColumnSortMode 枚举值之一。

DataGridViewColumnSortMode 值说明:

  • Automatic
    文本框列的默认排序模式。除非将列标头用于选择,否则单击列标头将自动按此列对 DataGridView 排序,并显示一个指示排序顺序的标志符号(向上的三角箭头:升序排序;向下的三角箭头:降序排序)。
  • NotSortable
    非文本框列的默认排序模式。可以以编程方式对此列排序;但此列不适合排序,因此未为排序标志符号保留空间。
  • Programmatic
    可以以编程方式对此列排序;而且为排序标志符号保留了空间。

一、使用SortMode属性自动排序

1、通过程序设置

?
1
2
3
4
5
6
7
8
private void FrmMain_Load(object sender, EventArgs e)
{
     foreach (DataGridViewColumn column in this.dgv_Users.Columns)
    {
          //设置自动排序
          column.SortMode = DataGridViewColumnSortMode.Automatic;
    }
}

2、在设计界面修改属性

DataGridView实现点击列头升序和降序排序

二、使用编程的方式实现自定义排序

可以以编程方式按任一列或多列中的值对 DataGridView 排序,而不论 SortMode 设置如何。当希望为排序提供自己的用户界面 (UI) 时,或者当希望实现自定义排序时,以编程方式排序很有用。提供自己的排序用户界面非常有用,例如,在设置 DataGridView 选择模 式以启用列标头选择时。在这种情况下,虽然列标头不能用于排序,但是仍希望标头显示相应的排序标志符号,因此将 SortMode 属性设置为 Programmatic。

设置为编程排序模式的列不会自动显示排序标志符号。对于这些列,必须通过设置 System.Windows.Forms.DataGridViewColumnHeaderCell.SortGlyphDirection 属性 来手动显示标志符号。为了在自定义排序中能够灵活操作,这是必需的。例如,如果按多列对 DataGridView 排序,则可能希望显示多个排序标志符 号或不显示任何标志符号。

对于已排序的 DataGridView,可以通过检查 SortedColumn 和 SortOrder 属性的值确定排序列和排序顺序。

如果SortMode的属性设置为Programmatic就需要使用编程的方式在ColumnHeaderMouseClick事件中实现自定义排序。

示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
private void dgv_Users_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{         
     DataGridView dgv = sender as DataGridView;
     if (dgv.Columns[e.ColumnIndex].SortMode == DataGridViewColumnSortMode.Programmatic)
     {
         string columnBindingName = dgv.Columns[e.ColumnIndex].DataPropertyName;
         switch (dgv.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection)
         {
            case System.Windows.Forms.SortOrder.None:
            case System.Windows.Forms.SortOrder.Ascending:
                   CustomSort(columnBindingName, "desc");
                   dgv.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = System.Windows.Forms.SortOrder.Descending;
                   break;
            case System.Windows.Forms.SortOrder.Descending:
                   CustomSort(columnBindingName, "asc");
                   dgv.Columns[e.ColumnIndex].HeaderCell.SortGlyphDirection = System.Windows.Forms.SortOrder.Ascending;
                   break;
            }
       }         
}
 
/// <summary>
/// 自定义排序
/// </summary>
/// <param name="columnName">绑定的字段名</param>
/// <param name="sortMode">排序方式 asc 升序 desc 降序</param>
private void CustomSort(string columnBindingName, string sortMode)
{
      DataTable dt = this.dgv_Users.DataSource as DataTable;
      DataView dv = dt.DefaultView;
      dv.Sort = columnBindingName + " " + sortMode;
      this.dgv_Users.DataSource = dv.ToTable();
      this.dgv_Users.Refresh();
}

到此这篇关于DataGridView实现点击列头升序和降序排序的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/dotnet261010/p/6828380.html

延伸 · 阅读

精彩推荐
  • C#WPF自动隐藏的消息框的实例代码

    WPF自动隐藏的消息框的实例代码

    本文给大家介绍WPF自动隐藏的消息框实例代码,当鼠标放上去将一直显示,移开动画继续,提供normal和error两种边框。非常不错,具有参考借鉴价值,感兴...

    逆天の萌娃4612021-12-01
  • C#c#获取两个特定字符之间的内容并输出的方法

    c#获取两个特定字符之间的内容并输出的方法

    今天小编就为大家分享一篇c#获取两个特定字符之间的内容并输出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    JustGoingToDo9542022-03-07
  • C#ASP.NET总结C#中7种获取当前路径的方法

    ASP.NET总结C#中7种获取当前路径的方法

    本文主要介绍了7种获取当前路径的方法,并做了代码演示,分享给大家,感兴趣的朋友可以参考一下。...

    Masonlu4382021-11-16
  • C#C#连接SQL Server数据库的实例讲解

    C#连接SQL Server数据库的实例讲解

    在本篇文章里小编给大家整理了关于C#连接SQL Server数据库的实例内容,有需要的朋友们参考学习下。...

    人生、蜕变10582022-08-20
  • C#C#获取App.Config配置项的方法总结

    C#获取App.Config配置项的方法总结

    在本篇内容里小编给大家分享了C#获取App.Config配置项的方法和相关知识点,需要的朋友们学习下。...

    C#教程网6322022-07-16
  • C#OpenCvSharp实现Mat对象简单的像素操作

    OpenCvSharp实现Mat对象简单的像素操作

    这篇文章主要介绍了OpenCvSharp实现Mat对象简单的像素操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋...

    haixin-5618892022-10-17
  • C#Unity扩展Hierachry的右键菜单

    Unity扩展Hierachry的右键菜单

    这篇文章主要为大家详细介绍了Unity扩展Hierachry的右键菜单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    yangrc12344172022-03-10
  • C#Winform学生信息管理系统登陆窗体设计(1)

    Winform学生信息管理系统登陆窗体设计(1)

    这篇文章主要为大家详细介绍了Winform学生信息管理系统登陆窗体设计思路,感兴趣的小伙伴们可以参考一下...

    丿木呈广予口贝8462021-11-23