哈喽,你好啊,我是雷工!
前面练习了查询某个组织的所有人员信息并展示,某些场合需要对于展示信息进行排序,以便于查看。
基于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 后记以上为实现查询结果的排序的实现,
你在实际开发中是如何实现动态排序的?
欢迎在评论区或交流群探讨交流。