C

雅轩聊科技 2024-08-12 19:52:49

哈喽,你好啊,我是雷工!

前面练习了查询某个组织的所有人员信息并展示,某些场合需要对于展示信息进行排序,以便于查看。

基于List作为DataGridView控件数据源时,无法通过点击列标题字段实现按对应字段排序,

这里练习对查询结果进行动态排序;

以下为练习笔记。

01 效果展示

当列表中有查询结果数据时,可以通过按钮实现列表结果的排序;

按姓名降序,按编号降序:

02 实现步骤

使用该方法进行排序,想要实现几种排序,就需要添加几种排序类,因为需要使用比较器接口;

2.1、排序类

首先在FrmPeopleManager中编写两个排序类

①按照姓名降序

class NameDESC : IComparer<People>{public int Compare(People x, People y){return y.PeopleName.CompareTo(x.PeopleName);}}

②按照编号降序

class PeoIdDESC : IComparer<People>{public int Compare(People x, People y){return y.PeopleId.CompareTo(x.PeopleId);}}

2.2、成员变量

在成员变量中保存查询结果

private List<People> peoList = new List<People>();

2.3、调整程序

在转型查询并绑定数据处,升级成成员变量;

//执行查询并绑定数据this.peoList= objPeoServer.GetPeoplesByGroup(this.cboGroup.Text);this.dgvPeopleList.DataSource = this.peoList;

2.4、姓名排序

在UI界面【姓名降序】按钮上双击,生成按钮事件,在其中编辑代码;

代码思路:

①:判断DataGridView控件数据行数,行数为0则不执行排序;

②:若行数不为0,则执行按姓名排序;

③:刷新DataGridView控件显示;

代码如下:

//姓名降序private void btnNameDESC_Click(object sender, EventArgs e){if (this.dgvPeopleList.RowCount == 0) return;this.peoList.Sort(new NameDESC());this.dgvPeopleList.Refresh();}

说明:此处根据DataGridView控件数据行数判断是否执行排序代码,其实这里可以优化,当列表无数据时,排序按钮处于非激活状态,不可点击,当列表中有数据时才可点击排序按钮;

2.5、编号降序

在UI界面【编号降序】按钮上双击,生成按钮事件,在其中编辑代码;

代码思路与姓名排序一样;

代码如下:

//编号降序private void btnPeoIdDESC_Click(object sender, EventArgs e){ if (this.dgvPeopleList.RowCount == 0) return; this.peoList.Sort(new PeoIdDESC()); this.dgvPeopleList.Refresh();}

03 后记

以上为实现查询结果的排序的实现,

你在实际开发中是如何实现动态排序的?

欢迎在评论区或交流群探讨交流。

0 阅读:0

雅轩聊科技

简介:感谢大家的关注