Setați modurile de sortare pentru coloanele controlului datagridview în ferestre

Sortarea acestor coloane poate fi implementată programat. Se oferă un loc pentru sortarea glifurilor.

Pentru o coloană care este implicită la NotSortable. Este posibil să fie necesar să modificați modul de sortare dacă conține valori care permit o sortare semnificativă. De exemplu, dacă există o coloană în baza de date cu numere care indică starea elementelor, puteți afișa aceste numere în forma pictogramelor corespunzătoare, atașând o coloană de imagini la această coloană a bazei de date. Apoi, puteți converti valorile numerice ale celulelor în valori grafice din modulul de procesare a datelor DataGridView. CellFormatting. În acest caz, după atribuirea proprietății SortMode la Automat, utilizatorii vor putea sorta coloana. Sortarea automată permite utilizatorilor să grupeze elemente care au aceeași stare, chiar dacă numerele corespunzătoare nu formează un număr natural. Steagurile de pavilion reprezintă un alt exemplu de oportunitate de a utiliza sortarea automată pentru a grupa elemente cu aceeași stare.







Sortarea datelor DataGridView poate fi efectuată prin valorile oricăror coloane sau simultan pe mai multe coloane, indiferent de parametrii proprietății SortMode. Sortarea programelor poate fi utilizată dacă doriți să furnizați o interfață de utilizator pentru sortarea sau implementarea unui mecanism special de sortare. Crearea unei interfețe personalizate de sortare poate fi necesară, de exemplu, când utilizați selecția pentru controlul DataGridView ca selecție pentru antetul coloanei. În acest caz, deși anteturile coloanelor nu pot fi utilizate pentru sortare, trebuie să afișați în continuare antetul de sortare corespunzător în anteturi. De aceea, proprietatea SortMode trebuie setată la Programmatic.

Coloanele pentru care este specificat modul de sortare a programului nu afișează automat ghilimele de sortare. Afișajul glif pentru astfel de coloane trebuie să fie configurat independent prin setarea valorii pentru proprietatea DataGridViewColumnHeaderCell.SortGlyphDirection. Acest lucru este necesar pentru a obține flexibilitate atunci când utilizați sortarea personalizată. De exemplu, atunci când sortați un DataGridView în mai multe coloane, este posibil să fie necesar să afișați mai multe sau nici unul dintre glifurile de sortare.

Deși sortarea programelor DataGridView poate fi efectuată pe orice coloană, unele coloane, de exemplu, coloanele cu butoane, nu pot conține valori care pot fi ordonate în mod semnificativ. Pentru astfel de coloane, setarea proprietății SortMode la NotSortable indică faptul că nu vor fi folosite pentru sortare și, prin urmare, nu este nevoie să rezervați un loc pentru tipul de glif.

Când sortați controlul DataGridView, puteți defini atât coloana de sortare, cât și ordinea de sortare după valorile proprietăților SortedColumn și SortOrder. Aceste valori nu au sens după sortarea personalizată. Pentru mai multe informații despre sortarea personalizată, consultați secțiunea "Sortare personalizată" de mai jos.







Când sortați controlul DataGridView. care conține atât coloane legate, cât și nelegate, salvarea automată a valorilor în coloanele nelegate este imposibilă. Pentru a salva aceste valori, trebuie să aplicați modul virtual atribuind proprietatea VirtualMode adevărată și manipulând evenimentele CellValueNeeded și CellValuePushed. Pentru mai multe informații, consultați Cum se face. Implementați un mod virtual pentru controlul DataGridView în Windows Forms. Sortarea pe coloane nelegate într-un mod conectat nu este acceptată.

Sortarea unui control DataGridView se poate face programabil apelând metoda Sortare.

Supraîncărcarea Sort (DataGridViewColumn, ListSortDirection) a metodei Sortare ia ca parametri valorile enumerărilor DataGridViewColumn și ListSortDirection. Această suprasarcină poate fi utilizată pentru sortarea coloanelor care conțin valori care pot fi ordonate în mod semnificativ, dar pentru care nu este de dorit să se utilizeze sortarea automată. Când numiți această suprasarcină și treceți o coloană cu valoarea DataGridViewColumnSortMode. Proprietăți automate SortMode Proprietățile SortedColumn și SortOrder sunt setate automat, iar antetul de sortare corespunzător apare în antetul coloanei.

Dacă controlul DataGridView este legat la o sursă externă de date prin setarea proprietății DataSource. Suprasolicitarea metodei Sort (DataGridViewColumn, ListSortDirection) nu funcționează pentru coloanele care nu au legătură. În plus, dacă proprietatea VirtualMode este setată la true. Un apel la această suprasarcină este posibil numai pentru coloanele corespunzătoare. Determinați dacă coloana este legată, pe baza valorii proprietății IsDataBound. Sortarea coloanelor care nu au legătură într-un mod conectat nu este acceptată.

Controlul DataGridView poate fi configurat utilizând supraîncărcarea Sort (IComparer) a metodei Sortare sau procesarea evenimentului SortCompare.

Suprasolicitarea metodei Sort (IComparer) ia ca argument o instanță a clasei care implementează interfața IComparer. Această suprasarcină poate fi utilizată dacă doriți să furnizați un mecanism de sortare personalizat, de exemplu, atunci când valorile din coloană nu au o ordine naturală de sortare sau ordinea naturală de sortare nu este adecvată. În acest caz, sortarea automată nu este posibilă, dar sortarea făcând clic pe anteturile coloanelor poate fi de dorit. Dacă antetele coloanelor nu sunt utilizate pentru selecție, această suprasarcină poate fi apelată în procedura de gestionare a evenimentelor ColumnHeaderMouseClick.

Suprasolicitarea metodei Sort (IComparer) funcționează numai dacă controlul DataGridView nu este legat la o sursă externă de date și proprietatea VirtualMode este falsă. Pentru a configura sortarea pentru coloanele asociate cu o sursă de date externă, trebuie să utilizați operațiile de sortare acceptate de această sursă de date. În modul virtual, operațiunile de sortare pentru coloanele care nu au legătură trebuie furnizate independent.

Pentru a utiliza supraîncărcarea metodei Sort (IComparer), trebuie să creați propria clasă care implementează interfața IComparer. În conformitate cu cerințele acestei interfețe, metoda IComparer ar trebui implementată în clasă. Compara. pe care DataGridView trece ca obiecte de date obiectele DataGridViewRow la apelarea supraîncărcării metodei Sort (IComparer). Din acest motiv, ordinea corectă a rândurilor poate fi calculată pe baza valorilor conținute în oricare dintre coloane.

Suprasolicitarea metodei Sort (IComparer) nu specifică valorile proprietăților SortedColumn și SortOrder. așa că trebuie să setați proprietatea DataGridViewColumnHeaderCell.SortGlyphDirection pentru a afișa ghilimele de sortare.

Ca alternativă la supraîncărcarea metodei Sort (IComparer), puteți implementa sortarea personalizată utilizând funcția de sortare SortCompare. Acest eveniment apare atunci când dați clic pe anteturile coloanelor pentru care este configurată sortarea automată sau când apelați supraîncărcarea Sort (DataGridViewColumn, ListSortDirection) a metodei Sort. Evenimentul este generat pentru fiecare pereche de linii din control, ceea ce face posibilă determinarea ordinii lor corecte.

Evenimentul SortCompare nu apare dacă este setată proprietatea DataSource sau dacă proprietatea VirtualMode este setată la true.







Articole similare

Trimiteți-le prietenilor: