grund med hjälp av föregående exempel , kommer vi att se hur man, Visual Basic. NET , sortera data i listvy av en av hans kolumner.
Projektet innan du lägger två knapparna för att välja som är önskad ordning. Som framgår av bilden nedan:

Senare i samma form koden kommer vi att skapa två nya klasser OrdenarPorNombre och ordning efter storlek), och händelserna knappar slickar vi sätter listvy ListViewItemSorter fastigheten med en ny instans av den klass som motsvarar den valda ordningen. Koden är kort, så att inte kosta mycket analys. Sen lämnar jag all kod i formuläret:
Import System.IO Allmän klass Formulär1 Private Sub Form1_Load (ByVal avsändaren som System.Object, _ ByVal e Såsom System.EventArgs) Handtag MyBase.Load Dim d As New DirectoryInfo ("C: \ Windows") ListView1.View = View.Details ListView1.FullRowSelect = Sant ListView1.BeginUpdate () ListView1.Items.Clear () För varje F Såsom FileInfo I d.GetFiles Dim objekt som ny ListViewItem (f.Name) item.SubItems.Add (f.length) item.SubItems.Add (f.CreationTime) item.SubItems.Add (f.LastWriteTime) item.SubItems.Add (f.LastAccessTime) ListView1.Items.Add (post) Nästa ListView1.EndUpdate () End Sub Private Sub Button1_Click (ByVal avsändaren som System.Object, _ ByVal E som System.EventArgs) Handtag Button1.Click "Sortera efter namn ListView1.ListViewItemSorter = Nytt ordenarPorNombre End Sub Private Sub Button2_Click (ByVal avsändaren som System.Object, _ ByVal E som System.EventArgs) Handtag Button2.Click "Sortera efter storlek ListView1.ListViewItemSorter = Nytt ordenarPorTamaño End Sub Änden klass Klass ordenarPorNombre Implementerar IComparer
Public function Jämför (ByVal x As Object, ByVal y As Object) _ As Integer Redskap System.Collections.IComparer.Compare Dim Item1 Såsom ListViewItem = CType (x, ListViewItem) Dim item2 Såsom ListViewItem = CType (y, ListViewItem) Återgå String.Compare (item1.Text, item2.Text) Änden Funktion Änden klass
Klass ordenarPorTamaño Implementerar IComparer Public function Jämför (ByVal x As Object, ByVal y As Object) _ As Integer Redskap System.Collections.IComparer.Compare Dim Item1 Såsom ListViewItem = CType (x, ListViewItem) Dim item2 Såsom ListViewItem = CType (y, ListViewItem) Math.Sign Return (CLng (item1.SubItems (1) Text) -.. CLng (item2.SubItems (1) Text)) Änden Funktion Änden klass
Som alltid hoppas jag att koden kommer vara användbar.
Informationen Bitacoras.com ...
Takt Bitacoras.com: att använda som grund exemplet ovan kommer vi att se hur man, Visual Basic Net ListView sortera data genom någon av sina kolumner.. Det tidigare projektet kommer att lägga två knappar för att välja vilken är den ordning .....
Ok, fint, men ... det bara stigande ordning och beställa upp och ner, vilket ger Klicka på kolumnhuvudet?
Hi Laura:
För att beställa med namn i fallande bara att vända de variabler som returneras i klassen OrdenarPorNombre ... Du måste ändra:
Återgå String.Compare (item1.Text, item2.Text)
för detta:
Återgå String.Compare (item2.Text, item1.Text)
och i fallet med numeriska ordningen måste vända tecken som returneras av ordenarPorTamaño fallet förändras Detta:
Math.Sign Return (CLng (item1.SubItems (1) Text) -.. CLng (item2.SubItems (1) Text))
för detta:
Återgå Math.Sign () CLng (item1.SubItems (1) Text.) - CLng (. Item2.SubItems (1) Text)) * -1)
och slutligen säga att ordern ger Klicka på kolumnen för listvy inte kommentera här, eftersom jag vill ägna en separat artikel.
Hälsningar, Elisha
Och som du beställer från ett fält i fallande datum Skapad t. ex.
Lägg till följande klass och tilldela den till knappen som du vill.
Klass ordenarPorFechaCreacion
Implementerar IComparer
Public function Jämför (ByVal x As Object, ByVal y As Object) _
As Integer Redskap System.Collections.IComparer.Compare
Dim Item1 Såsom ListViewItem = CType (x, ListViewItem)
Dim item2 Såsom ListViewItem = CType (y, ListViewItem)
Återgå Date.Compare (Date.parse (item1.SubItems (2). Text), Date.parse (item2.SubItems (2). Text))
Änden Funktion
Änden klass
Hej människor.
i C # som skulle vara straff för samma ordning?
[...] [...]
dobry början
i fallet om jag har en lista så
23 = 5 +5 +13
5 = 1 +1 +1 +2
4 = 3 +1
etc .....
Jag kan göra som jag beställa det genom att de nummer som om ett resultat är jag 231 = 100 100 31 inte sätta den efter 23 = 5 +5 13
God eftermiddag,
Ledsen för besväret, men kommer veta hur du kan sortera efter två kolumner på en gång? ungefär så här:
XYZ
ABA -> 1
baa -> 2
till B -> 3
och lämnade:
XYZ
till B -> 3
ABA -> 1
baa -> 2
Super tacksam om ni kunde hjälpa, och om inte, tack för att lägga samma information som var användbar för mig också.
Och om du vill hittills ..... som inte bara efter datum för skapande