【问题标题】:Sorting DataGridView by a Column that has both numbers and strings按具有数字和字符串的列对 DataGridView 进行排序
【发布时间】:2016-08-23 08:26:01
【问题描述】:

所以我有这个数据网格视图,我必须按包含数字和字符串的列对其进行降序排序,我想要做的是将数字按降序排列,然后是字符串(我不真正关心排序字符串,只在数字之后)

这是我的代码,适用于数字,但如果列中包含任何字符串,则会给我一个参数异常

DataGridView5.Sort(DataGridView5.Columns("Column8"), System.ComponentModel.ListSortDirection.Descending)

编辑:

假设我的列具有以下值

  • 6
  • 19
  • 男人
  • 1
  • 253
  • 蓝色

我需要我需要它像这样排序

  • 253
  • 19
  • 6
  • 1
  • 蓝色
  • 男人

【问题讨论】:

  • DataGridView.Sort 上的 msdn 文档似乎暗示该异常与混合 int/string 值无关
  • @MethodMan 不重复它是不同的我编辑了我的问题看到它。
  • @Flashi 问题非常接近,因为您应该处理 SortCompare 事件,只需更改逻辑以进行类型检查并将“实际”字符串放在最后进行比较。

标签: c# sorting datagridview


【解决方案1】:

因此,您似乎首先要将数字排序到顶部,然后再按数字降序对数字进行排序。

首先,您需要按是否为数字进行排序。您可以使用 int.TryParse(或十进制)来执行此操作。为此,您将需要一个一次性的“out”变量。

因此,如果它可以将字段解析为整数,则按数字 0 排序。否则按 1 排序。这会将数字放在顶部。

int parsedNum; 
Sort Descending >> int.TryParse(s, out parsedNum) ? 0 : 1;

要按顺序对数字进行排序,您当然需要按数字排序。您可能能够有条件地排序,但您可能必须转换为填充的字符串。

Sort Descending >> int.TryParse(s, out parsedNum) ? s.ToString("000000") : s;

【讨论】:

  • 对不起,我缺乏知识,但那是哪种语言?
  • 对不起。我在想SQL。给我一秒钟。
  • 谢谢,如果您能提供给定代码的代码,我将不胜感激,因为我不知道如何使用 datagridview 列来做到这一点
猜你喜欢
  • 2019-04-19
  • 2018-07-02
  • 2021-06-10
  • 2014-02-02
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 2020-11-19
相关资源
最近更新 更多