2009-04-30 18 views
38

Mam datagridview, które wiążę z tabeli sql, w tym dv mam te atrybuty: Id, Nazwa i Cena. Kiedy ustawiam SortMode w kolumnach Name na Automatic i klikam na nagłówek tej kolumny mogę posortować ten dv na podstawie pierwszej litery nazwy, w ten sposób mogę zamówić produkty na podstawie ich pierwszych liter (Acumulator, Boat, CocaCola, Engine itp.).Sortowanie kolumn danychGridView w języku C#? (Windows Form)

Czy istnieje sposób, aby to się stało bez kliknięcia nagłówka kolumny Nazwa. Szukam kodu, który wykona to zadanie po załadowaniu formularza.

+1

odpowiedź brzmi: this.dataGridView1.Sort (this.dataGridView1.Columns [ "Nazwa"] ListSortDirection.Ascending); – AXheladini

Odpowiedz

82

Jest to metoda na DataGridView nazwie "Sortuj":

this.dataGridView1.Sort(this.dataGridView1.Columns["Name"], ListSortDirection.Ascending); 

Będzie to programowo sort Twój DataGridView.

+0

, co z czasem zużytym na sortowanie i chce być posortowany w załaduj więc co z zamawianiem go podczas wykonywania instrukcji SQL, nie po wiązaniu! Myślę, że będzie on pochłaniał więcej czasu. – Ahmy

+0

Tak, Ahmy ma rację, pod względem wydajności prawdopodobnie lepiej jest posortować go po stronie bazy danych. Dlatego jeśli używasz SQL do bezpośredniej interakcji z DB, dołącz zamówienie do końca zapytania. Po prostu odpowiadałem na pytanie. To jest sposób sortowania DGV w kodzie. – BFree

+0

Ok, jeśli AXheladini tego potrzebują, więc jest w porządku, ale zrozumiałem z jego pytania, że ​​nie potrzebuje go w interfejsie, więc chciałem zaoszczędzić czas. Cieszę się, że AXheladini znalazł rozwiązanie i to, czego chcemy od naszych odpowiedzi – Ahmy

0

Użyj właściwości Datatable.Default.Sort, a następnie powiąż ją z datagridview.

3

można kontrolować dane zwracane z bazy danych SQL zamawiając dane zwrócone:

orderby [Name] 

Jeśli wykonanie zapytania SQL z aplikacji, należy zamówić dane zwracane. Na przykład utwórz funkcję, która wywoła procedurę lub wykona SQL i nadaj mu parametr, który uzyska kryteria kolejności. Bo jeśli zamówiłeś dane zwrócone z bazy danych, to zużyjesz czas, ale zamówisz to, ponieważ jest wykonywane, ponieważ mówisz, że chcesz je zamówić, a nie z interfejsu użytkownika, który ma być zamawiany w czasie wykonywania, więc zamów go podczas wykonywania SQL pytanie.

+0

Łączę datagridview automaticlly i nie używam zapytania. Czy istnieje sposób uzyskania dostępu do kwerendy źródła danych i poprawienia tego? – AXheladini

+0

Mam na myśli to, że instrukcja SQL wysyłająca zapytanie do bazy danych i zwracająca dane dodaje do niej kolejność składni w procedurze, której używasz, lub w instrukcji SQL w warstwie DAL – Ahmy

8
dataGridView1.Sort(dataGridView1.Columns[0],ListSortDirection.Ascending); 
+1

Zgadzam się, że używanie indeksu liczbowego lepszego niż indeksu łańcucha, jeśli zmienisz nazwę kolumny w przyszłości, będziesz musiał zmienić także indeks łańcucha. – 123iamking

1

Ten jest prostsza :)

dataview dataview1; 
this.dataview1= dataset.tables[0].defaultview; 
this.dataview1.sort = "[ColumnName] ASC, [ColumnName] DESC"; 
this.datagridview.datasource = dataview1;