2014-09-02 37 views
1

我已閱讀關於此「錯誤」的一些線程,但我無法弄清楚如何解決我的問題。作爲DataGridView.DataSource列表(T)使排序失敗

我有一個類,它看起來是這樣的:

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其中許多(其中類值不是屬性,我的是),並試圖轉換功能,這沒有真正的工作在我的情況。創建了適量的行,但所有列都是空白的。

我錯過了什麼?

+0

[其他答案](http://stackoverflow.com/a/24739862/2998271)在你鏈接的帖子中展示瞭如何處理屬性..它對你有用嗎? – har07 2014-09-02 11:59:45

+0

不,我得到這個相同的錯誤。空白行。 – gubbfett 2014-09-02 12:02:13

+0

爲了上帝的愛!我很抱歉這個帖子。當我切換回使用我的原始列表作爲來源時,我得到了空白行甚至與此。重新啓動VS並且第二個答案奏效。 – gubbfett 2014-09-02 12:10:10

回答

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