版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17017545/article/details/85234121
上一篇: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 |
---|