Sorteerimine DataGridView

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:

OrdenandoDatagridview001

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:

OrdenandoDatagridview002

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.

OrdenandoDatagridview003

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:

OrdenandoDatagridview004

Loodan, et saate anda hea kasutada seda tehnikat.

8 Responses to "sorteerimine DataGridView"

  1. Bitacoras.com ütleb:

    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 ......

    • Jose ütleb:

      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

  2. Omar ütles:

    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

  3. Natalia ütleb:

    Mul on vaja, et datagrid, mis on koormatud andmestik päringu üle tabeli SQL. CDO ma klõpsa veeru nimi, tellida.

  4. Nerio Espina ütleb:

    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.

  5. Alvaro ütleb:

    Üks küsimus, kui kuupäeva? Aitäh.

  6. Joel ütleb:

    hea sõber, aitas mind palju see ...

  7. BGTT ütleb:

    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!

Kommentaar