MFC界面编程基础(27):排序和筛选

上一篇:MFC界面编程基础(26):更新记录下一篇:MFC界面编程基础(28):直接访问MySql API 连接 mysql

CRecordView类有两个重要的数据成员m_strFilter和m_strSort,m_strFilter是用于表示筛选记录的条件字符串,m_strSort是用于表示排序的关键字的字符串。只要对这两个数据成员赋值,只能实现排序和筛选。

〖例〗首先在应用程序Exam2_1中建立两类排序,每一类是按ID号排序,另一类是按HomeCountry排序。
在“查看”菜单下添加三个菜单项:一条分隔线、“按ID排序”和“按国家排序”,菜单项ID设置为ID_VIEW_SORT_ID和ID_VIEW_SORT_COUNTRY。使用ClassWizard为两个菜单项在视图类中映射COMMAND消息处理函数得到,添加代码如程序清单2-5所示,实现排序。

程序清单2-5:实现排序的函数

void CExam2_1View::OnViewSortId() 
{
	// TODO: Add your command handler code here
	m_pSet->m_strSort="CustomerID";// 定义排序关键字按ID排序
	m_pSet->Requery() ;// 重新查询
	UpdateData(false);  //更新控件显示
}

void CExam2_1View::OnViewSortCountry() 
{
	// TODO: Add your command handler code here
    m_pSet->m_strSort="HomeCountry";
	m_pSet->Requery() ;
	UpdateData(false);
}

接着添加筛选条件,在一个对话框中输入一个国别,则只显示属于该国别的顾客记录。步骤如下:

  • 创建一个对话框,并添加控件,如下图所示。设置编辑框的ID为IDC_FILTER.。为该对话对话框添加一个新的对话框类CFilterDlg并使用ClassWizard为编辑框IDC_FILTER在对话框类CFilterDlg中添加一个Ctring类型的成员变量m_Filter。

筛选对话框
在这里插入图片描述

  • 在“查看”菜单下添加一个新的菜单项“筛选”,菜单项ID设为ID_VIEW_FLITER,使用ClassWizard在CExam2_1View类中为菜单项ID_VIEW_FILTER映射菜单处理函数,得到函数OnViewFilter()。
  • 在CExam2_1View类的实现文件中使用include命令包含“FilterDlg.h”文件,并在函数OnViewFilter()中添加代码,调用筛选对话框,并按对话框返回的字符串设置数据成员m_strFilter的值,实现筛选。若对话框返回空串,显示整个记录集。

程序清单2-6:实现筛选的函数

void CExam2_1View::OnViewFilter() 
{
	// TODO: Add your command handler code here
	CFilterDlg dlg;
	CString str;
	if (dlg.DoModal() == IDOK)//调用筛选对话框,按OK按钮返回
	{
		if (dlg.m_Filter.IsEmpty())//编辑框为空,显示整个记录集
		{
			str = "";
		}
		else
		{
			//定义筛选字符串
			str = "HomeCountry='" + dlg.m_Filter + "'";
		}
		m_pSet->m_strFilter = str;
		m_pSet->Requery();  //重新查询记录集
		UpdateData(false);  //更新控件显示
	}
	} 
上一篇:MFC界面编程基础(26):更新记录下一篇:MFC界面编程基础(28):直接访问MySql API 连接 mysql
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值