2013-03-15 13 views
10

Mój problem polega na: kiedy wiążę źródło danych do DataGridViewDataGridView automatyczne sortowanie nie działa, gdy źródło danych związany

BindingList<Contract> contracts = new BindingList<Contract>(Contract.GetAll()); 
dgEndingContracts.DataSource = contracts.Where(c => c.ExpirationDate <= nextMonth && c.IsArchived == false).ToList(); 

i ustawić każdą kolumnę SortMode = DataGridViewColumnSortMode.Automatic po kliknięciu na wiersze nagłówka dataGridView nie sortować.

Ale kiedy ręcznie utworzyć każdą kolumnę, utworzyć i wypełnić danymi każdego wiersza danychGridView, a tryb sortowania kolumn ustawione na automatyczne, sortowanie działa dobrze.

Jaka jest różnica i jak mogę włączyć sortowanie w pierwszym podejściu?

+0

są kolumny ustawione do automatycznego tworzenia w siatce? jest to jedyna rzecz, o której mogę myśleć .. jest to właściwość AuoGenerate Columns, którą uważam .. – MethodMan

+0

Ustawienie wartości AutoGenerateColumns na wartość false i ręczne dodawanie kolumn również nie pomaga. Chcę uniknąć ręcznego tworzenia kolumn i wierszy w DataGridView z powodu problemów z wydajnością. – mandrive

+0

jeśli ręcznie tworzysz kolumny, to brzmi dla mnie tak, jakbyś musiał ręcznie utworzyć je w kodzie, jak również używając słowa kluczowego "new", aby utworzyć kolumny, jeśli podążam za tym, co mówisz w oryginalnym pytaniu: – MethodMan

Odpowiedz

47

Znalazłem rozwiązanie.

To wydaje się, że nie może DataGridView sortowania albo List <T> lub BindingList<T>

Więc dodałem class SortedBindingList<T> podstawie code from: i teraz mój DataGridView można sortować kolumn.

Dzięki za pomoc dla facetów.

+1

dzięki bardzo^^ –

1

.ToList() nie zwraca czegoś, co implementuje IBindingList. użyć czegoś, jak thtat:

dgEndingContracts.DataSource = new BindingList<Contract>(contracts.Where(c => c.ExpirationDate <= nextMonth && c.IsArchived == false).ToList()); 
+1

Efekt jest taki sam. Kliknij nagłówek kolumny, aby go nie posortować. – mandrive

+1

Tak, BindingList nie obsługuje domyślnie sortowania. Oto przykład, jak można go sortować: [link] (http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/22693b0e-8637-4734-973e-abbc72065969/) Zobacz implementację z SortableBindingListCollection tam. – Slava

Powiązane problemy