duilib中对list容器内容进行排序

duilib中对list容器内容进行排序

#include<locale>
#include<algorithm>

int CMainWnd::m_ListIndex;

extern bool ComPareWithTitleDesc(CListContainerElementUI* item1, CListContainerElementUI* item2);//降序

extern bool ComPareWithTitleAsce(CListContainerElementUI* item1, CListContainerElementUI* item2);//生序

void CMainWnd::ListSort(CDuiString listName, int index,int nType)  //listName-需要排序的list名字,index-按照list中第几列排序,nType-排序方式 0-升序 ,1-降序
{

	CListUI* pList = static_cast<CListUI*>(m_pm.FindControl(listName));
	vector<CListContainerElementUI*>listElements;
	for (int i = 0; i < pList->GetCount(); i++)
	{
		CControlUI* pControl = pList->GetItemAt(i);
		if (pControl != NULL)
		{
			CListContainerElementUI* pListElement = static_cast<CListContainerElementUI*>(pControl);
			listElements.push_back(pListElement);
		}
	}
	m_ListIndex = index;
	if(nType==0)
	{
		sort(listElements.begin(), listElements.end(), ComPareWithTitleAsce);
	}
	else if(nType==1)
	{
		sort(listElements.begin(), listElements.end(), ComPareWithTitleDesc);
	}
	

	vector<CListContainerElementUI*>::iterator listElementlter;
	int m_index = 0;
	for (listElementlter = listElements.begin(); listElementlter != listElements.end(); listElementlter++)
	{
		CListContainerElementUI* pListElement = *listElementlter;
		pList->SetItemIndex(pListElement, m_index);
		m_index++;
	}
}

int CMainWnd::GetListIndex()
{
	return m_ListIndex;
}

extern bool ComPareWithTitleDesc(CListContainerElementUI* item1, CListContainerElementUI* item2)
{
	CListTextElementUI* plist1 = (CListTextElementUI*)item1;
	CListTextElementUI* plist2 = (CListTextElementUI*)item2;
	if (plist1 == NULL || plist2 == NULL) return false;
	auto s2 = plist2->GetText(CMainWnd::GetListIndex());
	auto s1 = plist1->GetText(CMainWnd::GetListIndex());
	if (_tcscmp(s1, s2) > 0) return true;
	else return false;
}

extern bool ComPareWithTitleAsce(CListContainerElementUI* item1, CListContainerElementUI* item2)
{
	CListTextElementUI* plist1 = (CListTextElementUI*)item1;
	CListTextElementUI* plist2 = (CListTextElementUI*)item2;
	if (plist1 == NULL || plist2 == NULL) return false;
	auto s2 = plist2->GetText(CMainWnd::GetListIndex());
	auto s1 = plist1->GetText(CMainWnd::GetListIndex());
	//if (_tcscmp(s1, s2) < 0) return true;
	if (::strcmp(s1, s2) < 0) return true;
	else return false;
}

使用方法:

ListSort("OnlineList", 1, 0);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值