点击表头小图标实现排序

 

集智数据平台的报表中的排序效果是多种多样的,先前已经有过很多点击报表头实现排序的例子,这里我们再介绍一个,在报表头上引入小图标(向上、向下的箭头)来点击,实现字段的排序效果。

 

实现效果图:(模拟数据)

 

升序:

 

 

降序:

 

 

制作方法:

 

1、  在Img文件夹中放所需小图标,如下:

 

 

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过以下步骤实现通过点击list control表头实现排序: 1. 创建一个list control控件。 2. 添加表头,可以使用InsertColumn()函数添加。例如,使用以下代码添加两个表头: ``` m_listCtrl.InsertColumn(0, _T("Name"), LVCFMT_LEFT, 100); m_listCtrl.InsertColumn(1, _T("Age"), LVCFMT_LEFT, 100); ``` 3. 为list control控件添加LVS_REPORT风格: ``` m_listCtrl.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_DOUBLEBUFFER | LVS_EX_HEADERDRAGDROP | LVS_EX_INFOTIP | LVS_EX_ONECLICKACTIVATE); m_listCtrl.ModifyStyle(0, LVS_REPORT); ``` 4. 为list control控件的表头添加点击事件。您可以使用以下代码表头添加点击事件: ``` m_listCtrl.GetHeaderCtrl()->SetCallbackFunc(HeaderCtrlCallback, this); ``` 其中,HeaderCtrlCallback是一个回调函数,用于处理表头点击事件。示例代码如下: ``` void CALLBACK HeaderCtrlCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM pThis) { if (uMsg == HDN_ITEMCLICK) { NMHEADER* pNMHeader = reinterpret_cast<NMHEADER*>(lParam); CListCtrl* pListCtrl = reinterpret_cast<CListCtrl*>(pThis); if (pListCtrl && pNMHeader) { int nColumn = pNMHeader->iItem; bool bAscending = (pListCtrl->GetHeaderCtrl()->GetSortOrder(nColumn) == SORT_ASCENDING); pListCtrl->SortItems(CompareFunc, MAKELONG(nColumn, bAscending)); pListCtrl->GetHeaderCtrl()->SetSortArrow(nColumn, bAscending ? SORT_DESCENDING : SORT_ASCENDING); } } } int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { int nColumn = LOWORD(lParamSort); bool bAscending = HIWORD(lParamSort); CString strItem1 = ((CListCtrl*)lParam1)->GetItemText(LOWORD(lParamSort), nColumn); CString strItem2 = ((CListCtrl*)lParam2)->GetItemText(LOWORD(lParamSort), nColumn); if (bAscending) { return strItem1.Compare(strItem2); } else { return strItem2.Compare(strItem1); } } ``` 在这个示例代码中,CompareFunc是一个比较函数,用于排序。当表头点击时,HeaderCtrlCallback函数会调用SortItems()函数进行排序,并且调用GetHeaderCtrl()->SetSortArrow()函数设置排序箭头的方向。 以上就是通过点击list control表头实现排序的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值