DataGridView veerud on vaikimisi sorteerimise funktsioon automaatselt logib lihtsalt klõpsates päises veerg, mis sisaldab andmeid, mille jaoks soovite sortida andmeid.
Igal veerul on vara SortMode DataGridView mida saame määrata NoSortable, Automaatne ja programmiline. Kui me ei muuda seda vara, toimub automaatne.
Selleks töötab suurepäraselt kui soovite sortida numbriline veerg. Arvandmeid on sorditud teksti nii, et selleks ei ole õige. Siis näitavad näiteks, et saaksite paremini mõista.
Näiteks on meil vaja vormis ja DataGridView kontrolli. Lisa kolm veergu nimega nimi, Grupi ja skoor. Sa peaksid nägema midagi sarnast järgmist pilti:
Seejärel lisage see kood vormi Load lisada mõned andmed:
Private Sub Form1_Load (ByVal saatja objektina, ByVal E System) käepidemed MyBase.Load DataGridView1.Rows.Add (New String () {"Eliisa", "kasutaja", 24321}) DataGridView1.Rows.Add ( Uus String () {"Carlos", "Probleemid" 122}) DataGridView1.Rows.Add (New String () {"Jose", "kasutaja", 423}) DataGridView1.Rows.Add (New String () {" Sebastian "," Juhendaja ", 1023}) DataGridView1.Rows.Add (New String () {" Javier "," kasutaja ", 111}) DataGridView1.Rows.Add (New String () {" Sue "," kasutaja " , 1}) DataGridView1.Rows.Add (New String () {"Veronica", "Juhendaja", 24}) DataGridView1.Rows.Add (New String () {"Gabriela", "kasutaja", 65}) DataGridView1. Rows.Add (New String () {"Augustine", "kasutaja", 719}) DataGridView1.Rows.Add (New String () {"Camila", "Juhendaja", 4322}) DataGridView1.Rows.Add (New String () {"Melisa", "kasutaja", 654}) DataGridView1.Rows.Add (New String () {"Liliana", "toetus" 22}) End Sub Nüüd, et paremini mõista, kuidas nad peaksid käivitage programm ja test tellitud kolm veergu. Siin ma näitan sulle, kuidas, kui tellitud veerg:
Noh, pilt on väga selge: 1, 1023, 111, 122, 22 ... mitte õiges järjekorras. Selle probleemi lahendamiseks peame järjekorda muuta veeru programmilised Automaatne hinnang.
Noh, see on vaid esimene samm tuleb nüüd lisada meie vorm UUED mis ajastada et numbriline sambad, klass on järgmine:
Avalik klassi OrdenarColumnaNumerica Rakendab System.Collections.IComparer Eraldi sortOrderModifier As Integer = 1 Eraldi Col As Integer = 0 Public Sub New (ByVal sortOrder Nagu SortOrder, ByVal veerg As Integer) Col = veerg Kui sortOrder = sortOrder.Descending Siis sortOrderModifier = -1 Siis ElseIf sortOrder = sortOrder.Ascending sortOrderModifier = 1 End Kui End Sub Avaliku funktsiooni Võrdle (ByVal x objektina, ByVal y As Object) As Integer _ Rakendab System.Collections.IComparer.Compare DataGridViewRow1 Dim Nagu DataGridViewRow = CType (x, DataGridViewRow) DataGridViewRow2 Dim Nagu DataGridViewRow = CType (y, DataGridViewRow) Tagasi (Math.Sign (CLng (DataGridViewRow1.Cells (Kl). Value) - CLng (DataGridViewRow2.Cells (Kl). Value))) * sortOrderModifier End Function End Class
Kui oleme meie klass käsitseda numbriveerg et me nimetame seda ürituse ColumnHeaderMouseClick DataGridView järgmiselt:
DataGridView1_ColumnHeaderMouseClick Private Sub (ByVal saatja objektina, ByVal e Nagu System.Windows.Forms.DataGridViewCellMouseEventArgs) käepidemed DataGridView1.ColumnHeaderMouseClick Telli Static As Integer = 1 Kui DataGridView1.Rows.Count> 0, siis Kui DataGridView1.Columns (e.ColumnIndex). Nimi = "Kirjavahemärgid" Siis Kui tellimuse = 1 Siis DataGridView1.Sort (New OrdenarColumnaNumerica (SortOrder.Ascending, e.ColumnIndex)) Order = 0 Muidu DataGridView1.Sort (New OrdenarColumnaNumerica (SortOrder.Descending, e.ColumnIndex)) Order = 1 End Kui End Kui End Kui End Sub
Valmis! Nüüd sa lihtsalt vaja käivitada ja testida programmi. Nüüd on tulemus välja nägema järgmist pilti õigesti tellida:
Loodan, et saate anda hea kasutada seda tehnikat.
Informatsioon Bitacoras.com ...
Määr Bitacoras.com: DataGridView veerud, vaikimisi sorteerimise funktsioon automaatselt logib lihtsalt klõpsates päises veerg, mis sisaldab andmeid, mille järgi soovite kirjed sortida ......
Tere ja teinud kõik kasutamise nagu seda ja ma saan viga kirjavahemärkide veerg ja tuli panna ta tsiteerib "ja manitsetakse mitte, siis saate mind aidata ... muchas grasias
Tere, ma leidsin selle post väga huvitav, ma ei tea, kuidas nad võiksid teha siis, kui kolonn on kuupäev, probleem on selles, et täites võre koos SQL päring, teisendatakse see varchar vaid näita mulle päevast ilma aega ja ei leia teed tellida neid võre
Mul on vaja, et datagrid, mis on koormatud andmestik päringu üle tabeli SQL. CDO ma klõpsa veeru nimi, tellida.
Tänan väga, ma olin vähe abi. Mul oli vaja sortida DataGridView kontrolli, ilma et kasutaja oli klikkima ja teie abiga olen saavutanud, mida ma tahtsin.
Üks küsimus, kui kuupäeva? Aitäh.
hea sõber, aitas mind palju see ...
tere! Mul on sarnane küsimus ja ma ei saa lahendada. keegi saab mind aidata? kui nii ma saan saata e-posti täpsustavaid küsimusi, mis võivad aidata. Aitäh. see on minu mail: nelson_nn_0800@hotmail.com tänulik, et mind aidata!