CListCtrl控件点击相应列标题排序后,相应行的背景色如何跟随记录排序后变化 20C

CListCtrl控件中某些行初始背景色是红色标识的。但当点击标题OnColumnclick,调用SortItems排序后,背景色的位置被标记到排序后的其它行数据上。如何能做到点击列头排序后,以前被红色标识的行仍被红色标识?

2个回答

要看你的代码,按照一般的做法,你可能是用重绘实现的,因此你需要借助ListItem的Tag或者一个数组,记录下哪个条目需要加上背景,那么在ListView排序后重新绘制这些条目。

你需要自绘实现,之前已被红色标记的行关联一个SteItemData值,绘制的时候调用GetItemData,然后根据该值的不同绘制不同的背景色CDC::FillSolidRect()

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
dbgrideh 点击标题行排序
-
CListCtrl排序后,显示出被选种行
选中后,该行会高亮显示出来.现在我的列表头增加了排序的功能.现在我想排序后,该选种还还能在视图中显示出来(就能看得见,不需要移动滚动条).比如:从上到下,按升序排的,则该选种行就显示在视图的最下面; 从上到下,按降序排的,则该选种行就显示在视图的最上面(现在ClistCtrl中看到的第一行)
CListCtrl控件记录排序问题
用 ODBC 连接数据库 rn加了个CListCtrl控件rnrnm_clc.InsertItem(0,GetId);rnm_clc.SetItemText(0,1,GetName);rnm_clc.SetItemText(0,2,GetSex);rnm_clc.SetItemText(0,3,GetCode);rn我用这段来为控件添加记录的,新添加的记录都会加在第0行..原来的记录都向下移一行,就是越后添加的越是靠控件上方 rn(假设7条记录 它的排序在控件从上往下次此是 记录6,记录5,记录4...记录0)rn但我想让记录按添加的顺序从第0条开始依次往后排rn(既 记录0,记录1,记录2...记录6)rn于是在添加函数中用rn while(!m_pSet->IsEOF())rn rn m_pSet->MoveNext();rn row = m_pSet->GetRecordCount();rn rnrow来取得当前的记录总数rn用 m_clc.InsertItem(row,GetId);rn m_clc.SetItemText(row,1,GetName);rn m_clc.SetItemText(row,2,GetSex);rn m_clc.SetItemText(row,3,GetCode);来插入,结果发现排序和想的一样..可是显示出来的每一条记录都只有第0项有数据,第1,2,3项都不显示//想请教各位达人..
CListCtrl 分页后排序问题
大家好,我用MFC实现了对excel表格的读取,并将其数据分页显示到CListCtrl控件中,现在想增加排序功能,但是问题就来了:我要实现对所有数据的排序,而不是一页的,请问该怎么做。谢谢解答
如何点击Vsflexgrid网格控件的标题行进行排序?
如何点击Vsflexgrid网格控件的标题行进行排序?就象LISTVIEW控件一样?
wwDBGrids+ADODataSet如何点击标题排序?
本来用wwDBGrids+ADOQuery1点击标题可以通用sort轻易实现排序,但为了易于实现主从表就用了ADODataSet,ADODataSet好似没有sort方法,不知如何实现点击标题进行排序,望各位指教!!
ListCtrl点击标题排序
ListCtrl点击标题排序,例程简单易懂。凑字数凑字数凑字数
如何禁止DataGrid点击列标题后排序?
如何禁止DataGrid点击列标题后排序?rn我用的是2003 中文版,rn在WinForm中rnrnthis.dataGrid.SetDataBinding(m_myDS.TableName.DefaultView,"");rnthis.dataGrid.AllowSorting =false;rn我绑定的是DataView ,我设了this.dataGrid.AllowSorting =false;rn怎么不起作用?rn
DBGRID 标题点击排序
我从网上找到DBGRID 标题点击排序的方法,无法理解lastcolumn是什么意思?rn如何才能不再提示'没有[Error] SpecPrint1.pas(169): Undeclared identifier: 'lastcolumn'
点击标题排序问题
功能介绍:ASP页面从SQL数据库读取数据,生成人员信息列表rn我想实现点击“姓名”,就会从高到低排,再点一下就会从低到高排,同理,若点“出生日期”,会从高到低排,再点一下就会从低到高排。请问各位高手怎么实现呢(我是刚接触ASP没多久,现在急需这个功能)?rnrn不胜感激!!!!
CListCtrl控件排序问题?
CListCtrl控件里加了如下的n项rn 编号 内容rn 0 sfdrn 1 dfrn 2 21frn 3 45rn ........ rn我想做成这样一个效果 rn 当删除其中的某一项时候 其他项的编号还是连续的升序排列。rn
CListCtrl控件排序,急!!!!
请问怎样对CListCtrl控件中的数据排序?rn最好能给出示范代码!rn谢了
VB窗体最大化后控件跟随变化
VB窗体最大化后控件跟随变化,很好的例子,可以学习下
窗体最大化后控件跟随变化
拖动传统放大或者缩小窗体,窗体和控件会随着比例变化。很好用的,希望大家喜欢。只是源代码。
分组后如何排序
[code=csharp]rnDataTable dt_order=BindGrid();rn var query = from c in dt_order.AsEnumerable()rn group c by newrn rn SKU = c.Field("SKU"),rn ProductAttributeValueIds = c.Field("ProductAttributeValueIds")rn into grn select newrn rn SKU = g.Select(p => p.Field("SKU")).First(),rn ProductAttributeValueIds = g.Select(p => p.Field("ProductAttributeValueIds")).First(),rn Quantity = g.Sum(p => p.Field("Quantity")),rn Total = g.Sum(p => p.Field("Quantity")) * g.Select(p => p.Field("Price")).First(),rn Email = string.Join(",", g.Select(p => p.Field("Email"))),rn ProductVariantID = g.Select(p => p.Field("ProductVariantID")).First(),rn BillingCountryID = string.Join(",", g.Select(p => p.Field("BillingCountryID")))rn ;rn我想根据Total 排序 请问怎么加啊?rn[/code]
数据统计后如何排序
我现在在做一个电话费的报表,但是我现在想按照分机的电话费多少进行排序,但是我的分机电话费是我在报表中SUM出来的,
记录插入后的排序问题
我有个表,将char name[30]做为关键字,然后我插入了几条记录,结果我查询结果一看,记录的顺序是按name域的字母顺序重新排列了,我估计与name关键字有关,可我想得到的结果是当时的输入记录的顺序,怎么办呢?
如果实现查询排序后某个记录所在的记录行
比如:rnname point rn小王 30rn小李 35rn小陈 80rn小刘 25rn小张 15rn要实现比如排序后小刘排在第2个记录,我查询小刘,返回下面值:rnname point rn小刘 25 2rn请问要怎么实现?rnrn
如何取得排序后的第一行记录
比如rnrnSELECT ID1,ID2 FROM A ORDER BY ID1rnrn这时候我用ROWNUM=1,取的不是第一行记录。rn如何取得查询结果的第一行记录?rn
记录分组后如何按时间排序?
我的表(news_content)中的字段(news_class)是一个新闻类别的字段(比如国内新闻、国际新闻、体育新闻.........)等好多种,表每天都有新闻向里面加入,我现在有一个页面想要读出每个类别的最新一条新闻,其中addtime字段是新闻加入到表里的时间。我用了下面SQL语句,读出的为什么不是最新的新闻?rnselect news_title,news_class,news_content,addtime,htm_name from news_content group by news_class order by addtime desc
请问如何查到排序后的第一条记录
请问在SYBASE中如何取第一条记录rnrn或者是取当前记录排序后前面的那条记录那
如何得到排序语句后的首条记录?
我要实现如下功能:rn我用sql语句:select * from aaa order by ddd desc,得出如下结果rn111 333rn111 444rn222 111rn222 333rn222 666rn现在我只需要字段1不同值的首条记录如我只需要'111 333'和'222 111',应如何用一条sql语句来实现?
GridView实现自动排序后,可否设置标题行的样式
GridView实现自动排序后, 标题行文本会变成一个超级连接, 而且只有当点击到标题栏中的文本时, 才会实现排序, 有没有办法实现如下功能:rnrn1. 当鼠标指向标题栏时, 标题栏中该单元格背景色改变,rn2. 当在标题栏某单元格中单击时(不一定要点击标题中的文本, 点空白处也行), 实现排序?
CListCtrl里点击COLUMN如何实现排序??
-
CListCtrl 如何排序?
利用CListCtrl的排序函数来进行排序,但是遇到了问题.程序如下rnrnint CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2,LPARAM lParamSort) rn rn CListCtrl* pListCtrl = (CListCtrl*) lParamSort;rn CString strItem1 = pListCtrl->GetItemText(lParam1, 4);rn CString strItem2 = pListCtrl->GetItemText(lParam2, 4);rnrn LPCTSTR s1=(LPCTSTR)strItem1;rn LPCTSTR s2=(LPCTSTR)strItem2;rnrn int n1=atoi(s1);rn int n2=atoi(s2);rnrn if (n1>n2)rn return -1;rn else rn return 1;rnrnrnCListCtrl* p_ReportCtrl=&m_ReportCtrl;rn p_ReportCtrl->SortItems(CompareFunc, (LPARAM) p_ReportCtrl); rnrn问题是lParam1和lParam2的值每一次都是0,所以结果就不对.rn请问我的程序中有什么问题吗?如何解决?rn
CListCtrl如何排序???
我做实时列表显示监测。当采集到数据后根据设备地址,更新到列表中,rn如设备地址已经存在,则更新改记录的检测值和时间,如果没有,则插入一条新记录。rn现在的问题是:如何根据上传的设备地址(第一列)自动进行排序。而不是手动点击表头再排序??rnrn表的列如下:rn 设备地址 监测值 监测状态 更新时间rn ------------------------------------------------------------rn 1 0.01 0 2013-11-11 10:04:10rn 3 0.03 0 2013-11-11 10:05:21rn .... .... ... .....rn 5rn 4rn 2rnrn显示的结果如下:rn1 ... ... ...rn2 ... ... ...rn3 ... ... ...rn4 ... ... ...rn5 ... ... ...rn
GridView用假分页后,点击标题排序
GridView 设置了AllowPaging="True" 假分页之后,想实现点击标题进行对当前页面显示的数据进行排序,而不是对整个数据源进行排序。求教各位大神有什么方案 可以解决!!
DataGridView 点击列标题后排序 索引不正确?
DataGridView 点击列标题后排序 索引不正确?怎么解决啊?
asp点击标题排序问题
用asp做了一个表显示数据,我想点一下某字段标题,按升序排列,再点一下按降序排列 ,如何实现啊
DBGridEh点击标题后会排序
第一步:ColumDefValues->Title->TitleButton设为TRUE  第二步:sortlocal   设为TRUE第三步:OptionsEH->dghautosortmarking设为TRUE 第四步:最后,一定要记得在pas文件的uses里引用上ehlib***,我这里的是ehlibCDS,网上也有的是ehlibBDE。...
JS 点击标题进行排序
<!DOCTYPE html> <html> <head> <title>JS点击标题排序</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3" /> <meta http-eq
Datagridview点击列标题排序
鼠标点击后重排序。这时什么属性被改变了? 我需要从代码中得到排序的方式,应该从哪里获取?rnrnthx
在dbgrid中,点击标题排序
我想实现这样的功能:rn dbgrid控件中显视money,startdate两字段。用户点money的标题时按升序排列,再点一次就按降序排列。点startdate是也是这样rn 然而dbgrid中没有提供这样的功能,我现在只能改变sql语句,写入相关的order by 。有没有简单的办法解决,请各位大虾不吝赐教
CListCtrl排序加背景色嵌套edit和combox
clistctrl扩展类,可以实现排序,添加背景色,同时可以设置是否嵌套edit,combox
datagridview设置背景色后,排序后内容重叠?
VS2005.rn我设置dGV.AlternatingRowsDefaultCellStyle.BackColor = Color.FromName("#e7e7e7"); //用于奇行数的背景颜色,这句是写在窗体的load里面的。运行后,翻页或者点击排序,数据表格里面的文字就会重叠。但如果我在设计器里面设置这个属性的背景色,就不会出现这个问题。不知道还有没有谁遇到过这个问题。赐教...
CListCtrl 排序
我在网上查了不少关于CListCtrl排序的文章,看是能看明白,但大部分例子都是SetItemData()函数中设置一个指向数据的指针。rnrn由于我的数据量比较大,所以插完数据后数据并未保存,因此这种方式对我来说不太方便。rnrn既然数据插入到控件后,数据将存储在控件里,我们也可以通过GetItemText来获取。这是我的思路,但实际的运行效果却和我的预期不一致,希望高手指点一下,谢谢!!rnrn[code=C/C++]rnBOOL CtestDlg::OnInitDialog()rnrn static CString strData[3][3] =rn rn _T("Washington"), _T("George"), _T("1789-1797") ,rn _T("Adams"), _T("John"), _T("1797-1801") ,rn _T("Jefferson"), _T("Thomas"), _T("1801-1809") rn ;rnrn m_listCtrl.InsertColumn(0, _T("Last Name"), LVCFMT_LEFT, 160);rn m_listCtrl.InsertColumn(1, _T("First Name"), LVCFMT_LEFT, 160);rn m_listCtrl.InsertColumn(2, _T("Term"), LVCFMT_LEFT, 160);rnrn for (int i=0; i<3; i++)rn rn m_listCtrl.InsertItem(i, strData[i][0]);rn m_listCtrl.SetItemText(i, 1, strData[i][1]);rn m_listCtrl.SetItemText(i, 2, strData[i][2]);rn m_listCtrl.SetItemData(i, i);rn rnrnrnvoid CtestDlg::OnColumnclick(NMHDR *pNMHDR, LRESULT *pResult)rnrn typedef struct rn rn CListCtrl *pListCtrl;rn int nColumn;rn DataItem;rnrn LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR);rn DataItem dataItem;rn dataItem.pListCtrl = &m_listCtrl;rn dataItem.nColumn = pNMLV->iSubItem;rn m_listCtrl.SortItems(SortFunc, (DWORD_PTR)&dataItem );rn *pResult = 0;rnrnrnint CALLBACK CtestDlg::SortFunc( LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort )rnrn typedef struct rn rn CListCtrl *pListCtrl;rn int nColumn;rn DataItem;rnrn DataItem *pDataItem = (DataItem *)lParamSort;rn CListCtrl *pListCtrl = pDataItem->pListCtrl;rn int iColumn = pDataItem->nColumn;rnrn CString strItem1 = pListCtrl->GetItemText((int)lParam1, iColumn);rn CString strItem2 = pListCtrl->GetItemText((int)lParam2, iColumn);rn TRACE( _T("Col = %d\t"), iColumn );rn TRACE( _T("strItem1 = %s\t"), strItem1 );rn TRACE( _T("strItem2 = %s\n"), strItem2 );rnrn int nRet = strItem1.CompareNoCase( strItem2 );rn return nRet;rn}rn[/code]
CListCtrl排序
CListCtrl排序功能详解,掌握排序,高清PDF。
请问点击标题如何进行排序?
请问点击标题如何进行排序?
DataGridView 点击列标题排序 如何实现
VS2005 ,VB.NET,用DataGridView,BindingSource绑定数据源,现在想点击列标题进行升序降序排列。如何实现?
Clistctrl的排序
我用Clistctrl下的insertitem插入行,但是显示的次序和插入的次序是相反的,后插的行排前面rn我想按插入的次序排序,后插的行排后面,请问怎么办rn
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件