我想将ListView中的一列排序为整数,因为如果我想对它们进行排序,我会得到结果。
如果我尝试对它们进行排序,我就得到这个。我认为原因是,他们被比作字符串?
1 10 11 12 2 20 21 3
我希望他们像这样排序:
1 2 3 4 五 10 11 20
依旧......
这是我的班级比较项目:
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是整数排序,以便它们像上面那样排序?
答案 0 :(得分:2)
result = String.Compare(itemA.SubItems[Column].Text, itemB.SubItems[Column].Text);
为什么不直接使用这些值,如果它们确实只是整数?
result = Int32.Parse(itemA.SubItems[Column].Text) - Int32.Parse(itemB.SubItems[Column].Text);
您可能需要一些额外的逻辑来检查列,以便您不会尝试从包含单词的列中解析整数。