哈喽,你好啊,我是雷工!
由于出差原因,有时间没有学习C#的这套课程了,今天忙里抽闲学会儿会儿课。
在前面学习了,这里继续学习通过DataTable显示全部成绩后,能够实现基于DataTable的视图实现绩效的快速筛选。
这样的话可以实现从本地做数据筛选,而不是每次改变筛选条件都需要再次从数据库中进行查询。
以下为学习笔记。
本实例的最新进度的源码会更新到C# 技术交流群中,有需要的小伙伴可以从群内获取。

1.1、战斗力
根据战斗力快速筛选对应人员:

1.2、所属组织
根据所属组织快速筛选:

1.3、全部数据
点击【显示全部数据】按钮,恢复界面打开时显示的所有数据。

2.1、 添加TextChanged事件
找到人员绩效快速查询窗体,在输入战斗力的文本框中添加一个TextChanged事件。
即当文本框的数值发生变化时要执行的事件代码。
在该事件后双击,创建并关联事件代码。

在代码页生成下面代码,习惯性的添加上注释://根据战斗力动态筛选。

2.2、判断逻辑
在动态筛选代码执行之前需要先确保在前面已经查询到了绩效表,并且要保证在战斗力文本框非空且输入的是一个正整数。
2.3、TextChanged事件代码
//根据战斗力动态筛选private void txtScore_TextChanged(object sender, EventArgs e){ if (this.txtScore.Text.Trim().Length == 0) return; if (Common.DataValidate.IsInteger(this.txtScore.Text.Trim())) {this.ds.Tables[0].DefaultView.RowFilter = "Category1>" + this.txtScore.Text.Trim(); }}2.4、显示全部数据
在UI界面选中显示全部按钮,添加点击事件,编写脚本实现显示全部的数据。

代码如下:
//显示全部数据private void btnShowAll_Click(object sender, EventArgs e){ this.ds.Tables[0].DefaultView.RowFilter = "GroupName like '%%'";}2.5、所属组织
根据所属组织的下拉框选择,自动筛选数据展示。
选中对应下拉框,然后在事件中找到SelectedIndexChanged,双击生成对应事件。

事件代码如下:
//根据所属的组织名称动态筛选private void cboGroup_SelectedIndexChanged(object sender, EventArgs e){if (ds == null) return;this.ds.Tables[0].DefaultView.RowFilter = "GroupName='" + this.cboGroup.Text.Trim() + "'";}03 后记以上为人员绩效快速查询界面,按照所属组织,战斗力,实现快速筛选的过程。