【问题标题】:List (Of T) as DataGridView.DataSource makes sorting failList (Of T) as DataGridView.DataSource 使排序失败
【发布时间】:2014-09-02 11:51:24
【问题描述】:

我已经阅读了一些关于这个“错误”的帖子,但我不知道如何解决我的问题。

我有一个看起来像这样的类:

Public Class Person
    Public Property Name As String
    Public Property PhoneNumber As string
    Public Property Age As Integer

    Public sub New(ByVal Values As String())
        Me.Name = Values(0)
        Me.PhoneNumber = Values(1)
        Me.Age = Convert.ToInt32(Values(2))
    End Sub
End Class

我从一个分号分隔的文件中获取我的数据,并通过循环这个文件并在分号上拆分来创建一个 Person 对象列表。像这样

Dim PersonsList As New List(Of Person)
For Each line in textfile..........
    PersonsList.Add(New Person(line.Split(";")))
Next

列表完成后,我告诉我的 DataGridView DataSourcePersonsList

这就像一个魅力,但我无法对列进行排序。 我在许多中找到了this post(其中类值不是属性,我的属性是)并尝试了在我的情况下并没有真正起作用的转换函数。创建了适量的行,但所有的列都是空白的。

我错过了什么?

【问题讨论】:

  • The other answer 在您链接的帖子中显示了如何处理属性.. 它对您有用吗?
  • 不,我遇到了同样的错误。空白行。
  • 看在上帝的份上!我很抱歉这篇文章。当我再次切换回使用我的原始列表作为源时,即使有了这个,我也得到了空白行。重新启动 VS 并且第二个答案有效。

标签: vb.net list datagridview datatable datasource


【解决方案1】:

如果您使用数据表作为数据源,则会自动启用列排序,您可以按任意列对数据进行排序:

    Dim dt As New DataTable
    dt.Columns.AddRange(
        {
            New DataColumn("Name"),
            New DataColumn("Phone"),
            New DataColumn("Age")
        })
    For Each s As String In IO.File.ReadAllLines("textfile1.txt")
        Dim temprow As DataRow = dt.NewRow
        temprow.ItemArray = s.Split(";"c)
        dt.Rows.Add(temprow)
    Next
    DataGridView1.DataSource = dt

【讨论】:

    猜你喜欢
    • 2021-05-25
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多