2011-03-03 24 views
0

我已經實現在http://www.martinwilley.com/net/code/forms/sortablebindinglist.html勢必SortedBindingList C#的DataGridView未示出的排序

所示的SortedBindingList類我已經然後成功添加的相同類型的對象給它。

我有一個DataGridView的窗體與BindingSource設置爲列表。當我單擊列標題時,列表會在SortedBindingList對象中排序,但是該更改不會反映在DataGridView中。 DataGridView是否需要設置屬性或需要訂閱的事件?

SortedBindingList<CustomObject> list = new SortedBindingList<CustomObject>(); 
//Add Objects to list 
CustomObjectBindingSource.DataSource = list; 
dataGridViewSource1.DataSource = CustomObjectBindingSource; 

如果我把一個斷點在SortedBindingList代碼的比較方法,其中返回的結果,我可以看到,該列表適當排序,只是在DataGridView不顯示列表,進行排序。我錯過了什麼?

謝謝

回答

1

編輯:對不起!由於某種原因,我認爲這是asp.net

在你的情況,你需要

BindingSource bs = new BindingSource(); 
    bs.DataSource = bs; 
    dataGridView.DataSource = bs; 

編輯2:

我只是嘗試這樣使用SortableBindingList類這樣

SortableBindingList<Person> list = new SortableBindingList<Person>(); 
    list.Add(new Person{Name = "abc",Email = "def"}); 
    list.Add(new Person { Name = "bcd", Email = "aqz" }); 
    dataGridView1.DataSource = list; 

for

public class Person 
    { 
     public string Name { get; set; } 
     public string Email { get; set; } 
    } 

它適用於我。

+0

感謝您的回覆,但我有點困惑。我沒有看到DataGridView上的DataBind()方法或我設置的BindingSource。你能更具體地說明哪個對象具有DataBind()方法嗎? – Atari2600 2011-03-03 19:53:21

+0

@ Atari2600編輯! – 2011-03-03 19:59:15

+0

再次感謝StackOverflowException。這與我已經在做的事情不一樣嗎?唯一的區別是我可以告訴的變量名稱。我假設,也許是錯誤的,應該將bs.DataSource設置爲列表,而不是返回給DataSource本身。 – Atari2600 2011-03-03 23:05:58