首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序数据视图项目9,000至10,000

排序数据视图项目9,000至10,000
EN

Stack Overflow用户
提问于 2017-02-22 21:14:49
回答 2查看 64关注 0票数 0

我试图对数据视图进行排序,但从9,000到10,000,有些东西不起作用。10,000是放在9,000人之前的。这是我的代码和我的程序的截图

代码语言:javascript
复制
 DataGridView1.Sort(DataGridView1.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-22 22:19:03

尝试使用Linq的OrderBy子句。它允许您拆分字符串并按数字进行排序。

代码语言:javascript
复制
Dim dList As List(Of Datagridviewrow) = datagridview1.Rows.Cast(of DataGridViewRow).ToList()
dList = dList.OrderBy(Function(q) Integer.Parse(q.Cells(0).Value.ToString().Split("-").Last)).ToList()
DataGridView1.DataSource = dList.Select(function(x) x.DataBoundItem).ToList()
票数 0
EN

Stack Overflow用户

发布于 2017-02-23 22:01:13

Control

通常,最简单和最通用的方法是处理DataGridView.SortCompare事件:

代码语言:javascript
复制
Private Sub DataGridView1_SortCompare(sender As Object, e As DataGridViewSortCompareEventArgs) Handles DataGridView1.SortCompare
    If e.Column.Index <> 0 Then Return                            ' custom sort only for the first column
    e.SortResult = Len(e.CellValue1).CompareTo(Len(e.CellValue2)) ' compare by string length
    e.Handled = e.SortResult <> 0                                 ' to use the default comparison if same length
End Sub

另一个选项是将IComparer传递给DataGridView.Sort方法(.Create需要.NET 4.5):

代码语言:javascript
复制
DataGridView1.Sort(Comparer(Of DataGridViewRow).Create(
                   Function(r1, r2)
                       Dim o1 = r1.Cells(0).Value, o2 = r2.Cells(0).Value
                       Dim i = Len(o1).CompareTo(Len(o2))
                       If i = 0 Then i = o1.ToString.CompareTo(o2)
                       Return i
                   End Function))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42402415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档