List(Of T)作为DataGridView.DataSource使排序失败

时间:2014-09-02 11:51:25

标签: vb.net list datagridview datatable datasource

我已经阅读了一些有关此问题的帖子"错误"但我无法弄清楚如何解决我的问题。

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

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(其中类值不是属性,我的属性)并尝试转换功能,这确实在我的情况下有效。创建了适量的行,但所有列都是空白的。

我错过了什么?

1 个答案:

答案 0 :(得分: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