将1列的ListView项排序为整数
本文关键字:排序 整数 ListView 1列 | 更新日期: 2023-09-27 17:51:07
我想排序一个列在我的ListView作为一个整数,因为如果我想排序他们我得到的结果。
如果我试着对它们排序,我就会得到这个。我认为原因是,它们作为字符串进行比较?
1101112220.213
我希望它们像这样排序:
123.45101120
等等…
这是我的类来比较项目:
public class ItemComparer : IComparer
{
public int Column { get; set; }
public SortOrder Order { get; set; }
public ItemComparer(int colIndex)
{
Column = colIndex;
Order = SortOrder.None;
}
public int Compare(object a, object b)
{
int result;
ListViewItem itemA = a as ListViewItem;
ListViewItem itemB = b as ListViewItem;
result = String.Compare(itemA.SubItems[Column].Text, itemB.SubItems[Column].Text);
if (Order == SortOrder.Descending)
{
result *= -1;
}
else
{
return -1;
}
return result;
}
}
在形式:ItemComparer sorter = listView_Data.ListViewItemSorter as ItemComparer;
if(sorter == null)
{
sorter = new ItemComparer(e.Column);
sorter.Order = SortOrder.Ascending;
listView_Data.ListViewItemSorter = sorter;
}
if(e.Column == sorter.Column)
{
if(sorter.Order == SortOrder.Ascending)
{
sorter.Order = SortOrder.Descending;
}
else
{
sorter.Order = SortOrder.Ascending;
}
}
else
{
sorter.Column = e.Column;
sorter.Order = SortOrder.Ascending;
}
listView_Data.Sort();
我如何添加列1,其中从数据库的id是一个整数排序,使他们像上面排序?
result = String.Compare(itemA.SubItems[Column].Text, itemB.SubItems[Column].Text);
如果这些值确实是整数,为什么不直接使用它们呢?
result = Int32.Parse(itemA.SubItems[Column].Text) - Int32.Parse(itemB.SubItems[Column].Text);
您可能需要一些额外的逻辑来检查列,这样您就不会试图从包含单词的列中解析整数。