关于c# listview 排序的问题

我做的listview中有3列属性 我想点击每一列的列头时都能按照相应的顺序 对这3列一组的数据进行排序 求大神给点思路

0

1个回答

只要实现一个cmparer就可以(根据哪一列排序),listview内置排序的

具体代码参考
http://blog.sina.com.cn/s/blog_7c5bff150101mj72.html

1
u010614795
农村葫芦娃 回复caozhy: 嗯 嗯 好使 我刚才操作有问题 谢谢昂
接近 4 年之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复农村葫芦娃: 那我的代码没问题
接近 4 年之前 回复
u010614795
农村葫芦娃 回复caozhy每行是独立的数据 不能拆分行
接近 4 年之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复农村葫芦娃: 你的意思是把每列当成独立的数据,可以拆散行?
接近 4 年之前 回复
u010614795
农村葫芦娃 我用的内置的但是 只是单列的进行排序了 其他列的数据没有变 啊
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c# listview排序问题
winfrom中点击listview的表头进行排序时,怎么样能连带把listview的数据来源对应的list也排序了rn
关于ListView排序的问题
我想实现单击表头,就自动按照表头排序的功能,就像98文件列表一样的功能,怎么做那?
关于LISTVIEW排序问题
点击COLUMNS使其LISTVIEW中数据排序。rn在LISTVIEW这个类中,有个OnCompare函数,是否是将比较函数写入其中,然后再在columnCLick 中调用OnCompare
关于listview的排序问题
我窗体上有个listview,把listview属性设置成控制面板那样的图标排列.还有三个radiobox,分别对应“升序”、“降序”和“不排序”。但是排序操作只在第一次选中某个radiobox的时候才执行。我哪里错了?请大家指点一下。rn这三个radiobox对应的程序如下:rn Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChangedrn ListView1.Sorting = SortOrder.Ascendingrn End Subrnrn Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChangedrn ListView1.Sorting = SortOrder.Descendingrn End Subrn Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChangedrn ListView1.Sorting = SortOrder.Nonern End Sub
关于listview排序的问题
[code=C#] #region 自定义变量rn int currentCol = -1;rn bool sort;rn #endregionrnrn private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)rn rn #region 字符串加上小三角,TrimEnd的用法测试rn string Asc = ((char)0x25bc).ToString().PadLeft(4, ' ');rn string Des = ((char)0x25b2).ToString().PadLeft(4, ' ');rn #endregionrnrnrn if (sort == false)rn rn sort = true;rn string oldStr = this.listView1.Columns[e.Column].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');rn this.listView1.Columns[e.Column].Text = oldStr + Des;rn rn else if (sort == true)rn rn sort = false;rn string oldStr = this.listView1.Columns[e.Column].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');rn this.listView1.Columns[e.Column].Text = oldStr + Asc;rn rnrn listView1.ListViewItemSorter = new ListViewItemComparer(e.Column, sort);rn this.listView1.Sort();rn int rowCount = this.listView1.Items.Count;rn if (currentCol != -1)rn rn for (int i = 0; i < rowCount; i++)rn rn this.listView1.Items[i].UseItemStyleForSubItems = false;rn this.listView1.Items[i].SubItems[currentCol].BackColor = Color.White;rnrn if (e.Column != currentCol)rn this.listView1.Columns[currentCol].Text = this.listView1.Columns[currentCol].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');rn rn rnrn for (int i = 0; i < rowCount; i++)rn rn this.listView1.Items[i].UseItemStyleForSubItems = false;rn this.listView1.Items[i].SubItems[e.Column].BackColor = Color.WhiteSmoke;rn currentCol = e.Column;rn rn rnrnrnrnrnrnrnrn private void listView2_ColumnClick(object sender, ColumnClickEventArgs e)rn rn #region 字符串加上小三角,TrimEnd的用法测试rn string Asc = ((char)0x25bc).ToString().PadLeft(4, ' ');rn string Des = ((char)0x25b2).ToString().PadLeft(4, ' ');rn #endregionrnrnrn if (sort == false)rn rn sort = true;rn string oldStr = this.listView2.Columns[e.Column].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');rn this.listView2.Columns[e.Column].Text = oldStr + Des;rn rn else if (sort == true)rn rn sort = false;rn string oldStr = this.listView2.Columns[e.Column].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');rn this.listView2.Columns[e.Column].Text = oldStr + Asc;rn rnrn listView2.ListViewItemSorter = new ListViewItemComparer(e.Column, sort);rn this.listView2.Sort();rn int rowCount = this.listView2.Items.Count;rn if (currentCol != -1)rn rn for (int i = 0; i < rowCount; i++)rn rn this.listView2.Items[i].UseItemStyleForSubItems = false;rn this.listView2.Items[i].SubItems[currentCol].BackColor = Color.White;rnrn if (e.Column != currentCol)rn this.listView2.Columns[currentCol].Text = this.listView2.Columns[currentCol].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' ');rn rn rnrn for (int i = 0; i < rowCount; i++)rn rn this.listView2.Items[i].UseItemStyleForSubItems = false;rn this.listView2.Items[i].SubItems[e.Column].BackColor = Color.WhiteSmoke;rn currentCol = e.Column;rn rn rnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrn public class ListViewItemComparer : IComparerrn rn public bool sort_b;rn public SortOrder order = SortOrder.Ascending;rnrn private int col;rnrn public ListViewItemComparer()rn rn col = 0;rn rnrn public ListViewItemComparer(int column, bool sort)rn rn col = column;rn sort_b = sort;rn rnrn public int Compare(object x, object y)rn rn if (sort_b)rn rn return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);rn rn elsern rn return String.Compare(((ListViewItem)y).SubItems[col].Text, ((ListViewItem)x).SubItems[col].Text);rn rn rn rnrnrn[/code]rnrn不知道为什么在我这里不起作用!会是哪里问题?
关于LISTVIEW的排序问题!
ListView1.Sorted = True '将列表排序rnListView1.SortOrder = 1 '''降序rnListView1.SortKey = ColumnHeader.Index - 1rn怎么对数字型的不能正常的排序,谢谢!rn
一个关于listview的排序的问题
在listview中,如何使数据按照用户点击的Column排序
关于ListView的排序的速度问题
用了微软给的例子以后,发现在加载数据的时候,速度变的很慢:CPU 99%,一共3000条记录,每条记录包含10个数据,字符串格式,大概需要150秒,而不排序的话,只需要5,6秒,请问有什么好的方法
关于控件ListView的排序问题
有一SQL语句为:select keys from table1 order by keys collate chinese_PRC_BIN,字段keys的内容为A、B、B...、[、\...(按asc码顺序排序),加入ListView1控件的代码如下:rnListView1.ListItems.ClearrnIf Adodc1.Recordset.RecordCount > 0 Thenrn Adodc1.Recordset.MoveFirstrn For i = 1 To Adodc1.Recordset.RecordCountrn Set myListItem = ListView1.ListItems.Add(, i_Str, Adodc1.Recordset.Fields("keys").Value, 0)rn ListView1.ListItems.Item(i).SubItems(1) = Adodc1.Recordset.Fields("keys").Valuern If Not Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveNextrn Next irnEnd Ifrnrn 这时得出的ListView1的排列顺序是[、\...、A、B、C...,ListView1怎样才能按A、B、B...、[、\...按序,请各位高手指教?
关于listview的数值排序问题
我使用的listview控件,在排序中,如何对带有小数的数值进行排序。我看了一些对数值排序的实例,但都是对整数的,有小数时就不行了。哪位能帮忙写个实例,谢谢
请教关于ListView排序的问题?
我想做一个类似资源管理器一样的东东,ListView里有目录和文件两类item,要分别进行按任意项排列,该怎么做,请指教
关于listview中的排序问题!
小弟正在做一个资源管理器,其中牵涉到了在listview中排序的问题,按照名字的顺序和逆序排序我用listView1.Sorting = SortOrder.Ascending;解决了,但是我还要做的几个排序是按照文件的大小排序等,但是不知道怎么实现,所以来此求助于各位大侠!!
关于在listview中的排序问题
我从SQL Server中读取的datetime类型的数据,放在了listview的一个列中,现在我想对该列排序,可是,listview的排序功能好像认为这个是个字符串,所以就按照字符串排序,并未按照时间先后进行排序。所以我想问一下,有没有在不改变数据源的前提下在listview中进行按照时间先后排序的办法,谢
C#关于LIstView的问题
我在按照书本做实例的时候,遇到需要为ListView添加双击事件,书本上说ListView控件的双击事件函数系统不能自动添加,需要用户在设计文档orm.Designer.cs中添加后才能起作用。可是我找不到这个文件,该怎么解决?谢谢
C# listview 点击列头排序
#region 自定义变量 int currentCol = -1; bool sort; #endregion//列头点击事件 private void lvw_ColumnClick(object sender, ColumnClickEventArgs e) { string Asc = ((char)
带ListviewGroup的ListView排序 c#
怎样给一个带有分组的ListView排序,在当前ListView只有一组的时候才能排序.
ListView 排序代码 c#版
ListView 排序代码 c#版 详细 介绍
C# Winform 关于ListView的问题
简单的效果图如下:rn[img=https://img-bbs.csdn.net/upload/201412/25/1419511535_668560.jpg][/img]rn想要达成的效果是点击那个Yes的勾就可以改变ListView 该项的背景颜色rnrnrn两个问题:rn1. 关于是否选中的问题 我是用如下代码来验证是否选中:rn if(this.listViewAllMainCountry.SelectedItems.Count <= 0)rn rn return;rnrn但是这样的问题是,如果我先选中了某一项 然后鼠标点击其他地方,那么选中的Focus效果就会消失,样子就跟之前什么都没选中的时候一样,但是此时仍然是被选中的。这怎么解决?rnrn2. 能不能做到选中一项及选中一行而不是像现在这样的选中方式:rn[img=https://img-bbs.csdn.net/upload/201412/25/1419511764_479226.jpg][/img]rnrn3. 如何修改背景色,要修改一行的背景色,现在我能做到的效果是:rn[img=https://img-bbs.csdn.net/upload/201412/25/1419511840_551903.jpg][/img]rnrn感谢!rn我之前查到需要自己绘制?OwnerDraw?这是什么意思?rn
关于C# ListView 的两个问题
第一个问题:rn rn columnHeader 怎么自定义形状, 或者能自定义图片或者是背景图,rnrn 第二个问题:rnrn 1 行rn 2 行rn 3 行rn 4 行 rnrn 怎么让奇数的颜色是一种,偶数的颜色是一种?rn 谢谢前辈能来看我的帖子,请知道的前辈一定帮帮我。
C#关于LISTVIEW取值的问题。
在LISTVIEW里如何取到所选的一组值?rn例如:rn身高 XX XXrn体重 XX XXrn视力 XX XXrn。。。rn用SELECTITEM我只能取到第一位的值。。(例如说我点的是身高,取出的是“身高”,然后删除身高)rn我想取出身高,体重,视力 3个 然后一起删除 rn如何取?
C#两个关于listview的问题
1.我选择的是details视图,在列表框中用鼠标拖出虚线框选择多项(不是直接点击项)时,项前的checkbox会发生不规则改变,据我所知check的状态和select的状态默认是不关联的,这是怎么回事?rn2.listView1_ItemSelectionChanged事件发生时如何知道是哪个项发生改变,怎样将该项传递给事件?
C#关于ListView控件的问题
我创建了一个学生信息查询的窗体,然后在窗体中加入了ListView控件,用来显示查询得到的学生各项信息,其中有以下几列要显示rn学生姓名、学号,学生性别、学生年龄、学生住址、Email我的数据库中的设置是学生地址和邮箱是可以为NULL的,rn现在就出现了一个问题,在我执行完查询语句后,在给每个变量赋值的时候,出现只要其中有一列为NULL的话,程序就报错,例如:rn要查询一个名叫张瑞龙的同学的信息,但是这时这个学生的地址为NULL,当为他的地址赋值时就会出错,rn代码如下:rnrnrn//声明变量rnstring studentName;rnstring code;rnstring sex;rnstring age;rnstring address;rnstring email;rnrnrn//创建SQL语句rn string sql = string.format("SELECT StudentName,Code,Sex,Age,Address,Email FROM Students WHERE StudentName LIKE '张瑞龙'");rn//创建Command对象rn SqlCommand command = new SqlCommand(sql, DBHelper.connection);rn SqlDataReader dataReader; //定义一个DataReader对象rn DBHelper.connection.Open(); //打开数据库连接rn dataReader = command.ExecuteReader(); //执行查询命令rnrnrn//为变量赋值rnwhile(dataReader.Read())rnrn string studentName = (string)dataReader["StudentName"];rn ……rn [color=#FF0000]string address = (string)dataReader["Address"]; //程序运行到此报错,如果数据库中的地址改为不为NULL,就不报错了,我想问下怎么修改,哪里错了[/color]rnrn
ListView点击排序的问题
我创建了一个ListView列表控件,上面有3个标题,我现在想编程实现点击任意一个标题可是实现对应的排序方法,比如说:rnrn3个标题是 学号 年龄 班级 如何对他们添加点击标题对其下面的内容进行排序
listview的排序问题
如何对数字排序?rnrnlistview的排序好像是针对字符的,比如900排在1000后面。
listview 的列排序问题
我的listview的第一列只有图标(表示状态),如何实现对图标列的排序.
ListView排序的问题?
单击列,如何实现重新排序rn在这ListView1_ColumnClick事件中
ListView控件排序问题
winForm ListView控件rn我初始化时 其前面的小图片是齐全的rn但是我排序之后 某些图标就丢失了 rn请问是什么问题
ListView 排序问题?
本人在开发一个软件时,需要实现类似windows资源管理器的功能,参考了delphi Demo自带的Virtual ListView例子,可以实现,就是没有排序功能,在网上搜了半天,在大富翁论坛上找到如下文档:http://www.delphibbs.com/delphibbs/dispq.asp?lid=1606415rn说虚拟listview和排序是鱼翅和熊掌,本人也试了一下,无法排序,望高手赐教!rn
请问listview的排序问题!!!!!!!!!!????????????????????????????
请问listview的排序问题!!!!!!!!!!????????????????????????????rnrnrn listview的viewstyle属性设为vsReport,请问怎样可以点击一下某个column就根据这个column的的子项rnrn目进行升序或降序序排序rnrnvb6.0是这样做的,代码如下:rnrnprivate sub listview_columnclick(byval columnheader as columnheader)rnrn listview.sortorder=0 '设为升序rnrn listview.sortkey= columnheader.index -1 ' 设置点击的column为排序的依据rnrn listview.sorted=true '开始排序rnrnrn end sub rnrnrn请问在delphi中的代码应该怎样写 ???????????rnrn感激万分!!!
WPF ListView排序问题
rn根据网上的例子对WPF ListView 成功排序。rnrn也学会了对其项成功拖拽。rnrn但是,当我点击列头排序后,拖拽就不起作用了,可以拖动,但放置的时候不起作用了。rnrn求帮忙???
ListView排序问题,急!
通常偶使用CustomSort函数,和OnCompare事件进行排序rnrn但是由于显示的结果较多,偶使用virtualListView方法显示数据,结果排序功能不好用了。rnrn有没有解决方法,麻烦帮忙指点一下。
listview的排序问题!
listview的排序问题!点击listview的头,可以对listview进行排序该如何实现??
listview 的列排序问题.
我的listview的第一列只有图标(表示状态),如何实现对图标列的排序.
android listView 排序问题
![](https://img-ask.csdn.net/upload/201606/29/1467189619_487675.png) 大概的要求,就是 我点击姓名,就根据姓名排序。点击年龄就按照年龄排序。n本人才学android3天,有很多都不懂。 所以开个帖子问问各大神。
ListView的排序问题
ListView在Detail形式的时候,如何才能使其按不同的列排序!rnrn记得以前用VB时,有SortKey 属性,但是现在没有了!rnrn如何实现??
ListView控件的排序问题
我的ListView控件中第一列ID全部是数字,我想让listView按数值大小排序rnrnlvMy.Sorted=TruernlvMy.SortKey=0 rnlvMy.SortOrder = lvwAscendingrnrn用上面的代码得到的排序结果是按字符来的,如:rnrn1rn11rn12rn2rn23rn25rn32rn35rn4rn5rn6rn7rn8rnrn怎样才能让listView控件按照数值大小排序呢?rn
WinForms的ListView排序问题
请问:rn在对ListView进行排序之后rn我想使以后插入的数据不按照该顺序排列rn即要排序之后取消排序的作用该怎么办呢....rn比如rn序号 数据rn1 a1rn2 a2rn3 a3rn4 a4rn则我在最顶端插入一个数据 rn序号 数据rn 5 a5rn结果ListView把它放到最底端rn该怎么纠正啊???rn谢谢rn
ListView排序问题!
使用了帮助中的排序代码,但是存在两个问题:rn1:排序列的header上没有排序标志,就像资源管理器中排序列的header上都有三角形标记,表示升序和降序。rn2:我的ListView中的数据是动态更新的,每次更新时要清空原来的数据,然后添加最新的数据,此时对新数据不会进行排序。能不能添加数据时就按照原来的排序要求进行排序?
关于android的listView排序问题...
写一个播放器,显示播放列表按照首字母排序,字母排在汉字前面。rnListView的适配器里面有这样一个方法,所以自己构造了一个类SongComparator继承自Comparatorrn[code=java] mSortAdapter.sort(new SongComparator());[/code]rnrn[code=java]package com.huwei.sweetmusicplayer.comparator;rnrnimport java.util.Comparator;rnrnimport com.huwei.sweetmusicplayer.models.Song;rnimport com.huwei.sweetmusicplayer.util.CharacterParser;rnrn rnpublic class SongComparator implements Comparator rnrn @Overridern public int compare(Song song1, Song song2) rn // TODO Auto-generated method stubrn // boolean isLetter1;rn // boolean isLetter2;rn // 得到歌曲名rnrn String title1 ;rn String title2 ;rn int isLetter1_m ;rn int isLetter2_m ;rn boolean isLetter1 ;rn boolean isLetter2 ;rnrn rn title1 = song1.getName();rn title2 = song2.getName();rnrn if (title1.equals("啊啊啊啊") || title2.equals("啊啊啊啊")) rn System.out.println(); //断点位置rn rnrn isLetter1_m = CharacterParser.firstIsLetter(title1);rn isLetter2_m = CharacterParser.firstIsLetter(title2);rnrn isLetter1 = (isLetter1_m == 0) ? false:true;rn isLetter2 = (isLetter2_m == 0) ? false:true;rn rnrn rnrn // if(isLetter1_m!=0)rn // isLetter1=true;rn // else rn // isLetter1=false;rn // rn //rn // if(isLetter2_m!=0)rn // isLetter2=true;rn // else rn // isLetter2=false;rn // rnrn // isLetter1=true;rn // isLetter2=false;rn if (isLetter1 && isLetter2) rn // 第一个是小写,第二个是大写rn if (isLetter1_m < isLetter2_m) rn return -1;rn // 第一个是大写,第一个是小写rn else if (isLetter1_m > isLetter2_m) rn return 1;rn // 大小写情况相同rn else rn return CharacterParser.getFirstLetter(title1).charAt(0)rn - CharacterParser.getFirstLetter(title2).charAt(0);rn rn else if (isLetter1) rn return -1;rn else if (isLetter2) rn return 1;rn else rn return CharacterParser.getFirstLetter(title1).charAt(0)rn - CharacterParser.getFirstLetter(title2).charAt(0);rn rn rnrnrn[/code]rn现在的问题是调试时发现在判断else if (isLetter1)时, 不进入下一个判断else if (isLetter2),而直接跳到了最后一个else,有时看到isLetter1,isLetter2时空的,有时不是的。我把断点设置在System.out.println();为了保证有一个是汉字。rnrnrn如果有需要我可以把整个工程发上来。
ListView排序问题
对ListView中的项进行排序,思路是处理GridViewColumnHeader的Clicke事件,事件处理代码如下:rnrn static void OnGridViewColumnHeaderClicked(object sender, RoutedEventArgs e)rn rn var listview = sender as ListView;rn var header = e.OriginalSource as GridViewColumnHeader;rnrn if (listview != null && header != null)rn rn var propName = header.Column.Header as string;rn if (propName != null)rn rn UpdateSortDescription(CollectionViewSource.GetDefaultView(listview.ItemsSource), propName);rn rn rn rnrn static void UpdateSortDescription(ICollectionView view, string propName)rn rn ListSortDirection direction = ListSortDirection.Ascending;rnrn if (view.SortDescriptions.Count > 0 && view.SortDescriptions[0].PropertyName == propName)rn rn if (view.SortDescriptions[0].Direction == ListSortDirection.Ascending)rn rn direction = ListSortDirection.Descending;rn rn rnrn //排序代码rn view.SortDescriptions.Clear();rn view.SortDescriptions.Add(new SortDescription(propName, direction));rn view.Refresh();rn rn现在的问题是:rn1.虽然每次点击列头时排序代码都执行了,但只有第一次点击时有效果,后面再点都没有反应(排序的顺序是对的)rn2.第一次排序的结果不正确,如下图,是点击ID列后的结果,不清楚这个顺序是怎么出来的,[img=https://img-bbs.csdn.net/upload/201409/10/1410334986_867974.jpg][/img]rn怎么破?
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo