Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Sortering i listview

Postades av 2002-12-28 21:04:25 - Gustav Nilsson, i forum vb.net, Tråden har 9 Kommentarer och lästs av 1177 personer

Hej!

Hur sorterar man en listview efter en column? T.ex. I en listview med två kolumner (förnamn, efternamn) skall användaren kunna välja om det skall sorteras efter förnamn eller efternamn.

Jag har hittat lösningar till VB 6 men får det inte att fungera i .NET.

/Get



Svara

Sv: Sortering i listview

Postades av 2002-12-30 10:27:00 - Fredrik Edström

Kan detta funka tro:
<code>listView1.Sorting = SortOrder.Ascending;</code>

//Fredde


Svara

Sv: Sortering i listview

Postades av 2002-12-30 11:19:02 - Gustav Nilsson

Nja, det var inte riktigt så jag menade. Vad jag vill det är att användaren skall kunna välja om det skall sorteras efter förnamn eller efternamn.

/Get


Svara

Sv: Sortering i listview

Postades av 2002-12-30 15:49:36 - Roger Alsing

om datat kommer från en DataTable så kan du sortera den först.

MyDataTable.DefaultView.Sort="stad asc"
MyListview.datasource=MyDataTable;


Svara

Sv: Sortering i listview

Postades av 2002-12-30 16:12:34 - Gustav Nilsson

Jag valde att sortera datan i SQL-satsen istället för i listviewen. I Vb 6 hade det varit enklare att sortera i listviewen.

Tack till alla som visat intresse för mitt problem!

/Get


Svara

Sv: Sortering i listview

Postades av 2002-12-30 22:12:32 - Andreas Hillqvist

Du har möjligheten att soretera en listview hur du vill genom att bara skapa en class som implementerar ICompare gränssnittet:

<code>
Public Class ListViewSort
Implements System.Collections.IComparer

Private mSorting As System.Windows.Forms.SortOrder
Private mColumnIndex As Integer
Private mCompareMethod As Microsoft.VisualBasic.CompareMethod

Public Property Sorting() As System.Windows.Forms.SortOrder
Get
Return mSorting
End Get
Set(ByVal Value As System.Windows.Forms.SortOrder)
mSorting = Value
End Set
End Property

Public Property ColumnIndex() As Integer
Get
Return mColumnIndex
End Get
Set(ByVal Value As Integer)
mColumnIndex = Value
End Set
End Property

Public Property CompareMethod() As Microsoft.VisualBasic.CompareMethod
Get
Return mCompareMethod
End Get
Set(ByVal Value As Microsoft.VisualBasic.CompareMethod)
mCompareMethod = Value
End Set
End Property

Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim ItemX As ListViewItem
Dim ItemY As ListViewItem
Select Case mSorting
Case SortOrder.None
Case SortOrder.Ascending
ItemX = x
ItemY = y
Compare = StrComp(ItemX.SubItems(mColumnIndex).Text, ItemY.SubItems(mColumnIndex).Text, mCompareMethod)
Case SortOrder.Descending
ItemX = x
ItemY = y
Compare = -StrComp(ItemX.SubItems(mColumnIndex).Text, ItemY.SubItems(mColumnIndex).Text, mCompareMethod)
End Select
End Function

Public Sub New(ByVal Sorting As System.Windows.Forms.SortOrder)
mSorting = Sorting
End Sub
Public Sub New(ByVal Sorting As System.Windows.Forms.SortOrder, ByVal CompareMethod As Microsoft.VisualBasic.CompareMethod)
mSorting = Sorting
mCompareMethod = CompareMethod
End Sub
End Class



</code>
Sedan skapar du bara en instans som du anropar i ColumnClick eventet:
<code>
Private mListViewSort As ListViewSort

Private Sub ListView1_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick
If mListViewSort.ColumnIndex = e.Column Then
If mListViewSort.Sorting = SortOrder.Ascending Then
mListViewSort.Sorting = SortOrder.Descending
Else
mListViewSort.Sorting = SortOrder.Ascending
End If
ListView1.Sort()
Else
mListViewSort.ColumnIndex = e.Column
mListViewSort.Sorting = SortOrder.Ascending
ListView1.Sort()
End If
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

mListViewSort = New ListViewSort(SortOrder.None, CompareMethod.Text)
ListView1.ListViewItemSorter() = mListViewSort

'Exempel data
Dim Values() As ListViewItem

ReDim Values(4)
Values(0) = New ListViewItem(Split("Nils Petterson"))
Values(1) = New ListViewItem(Split("Adam Östman"))
Values(2) = New ListViewItem(Split("Bengt Carlsson"))
Values(3) = New ListViewItem(Split("Carl Bengtsson"))
Values(4) = New ListViewItem(Split("Peter Olsson"))

ListView1.Items.AddRange(Values)
End Sub
End Class
</code>


Svara

Sv: Sortering i listview

Postades av 2002-12-31 09:04:18 - Gustav Nilsson

Tack!

/Get


Svara

Sv:Sortering i listview

Postades av 2006-03-26 01:32:36 - Pär Pettersson

Har letat efter en sån här funktion. Funkar bra förutom att den sorterar tal fel. 9 kommer t.ex. efter 10. Hur löser jag det?

Tack på förhand

/Pär


Svara

Sv: Sortering i listview

Postades av 2006-03-26 23:23:28 - André Claesson

Att den sorterar 9 efter 10 är knappast fel (9 är större än 1), men kanske inte önskvärt. Det är ju dock lätt att lösa genom att göra om det till integer och jämföra storlek i sin comparer.


Svara

Sv: Sortering i listview

Postades av 2006-03-27 08:09:36 - Johan Djupmarker

Jag har använt denna funktionen för att kunna sortera tal också. Jag använder C#, så jag har bara kört funktionen genom en online-översättare. Hoppas att det fungerar:

<code>
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer
Dim ReturnVal As Integer

Dim d1 As Double,d2 As Double
If Double.TryParse((CType(x,ListViewItem)).SubItems(col).Text,System.Globalization.NumberStyles.Any,Nothing,out d1 Then
Double.TryParse((CType(y, ListViewItem)).SubItems(col).Text, System.Globalization.NumberStyles.Any, Nothing, d2))

ReturnVal = Decimal.Compare(Convert.ToDecimal(d1), Convert.ToDecimal(d2))
Else
ReturnVal = String.Compare((CType(x, ListViewItem)).SubItems(col).Text, ((ListViewItem)y).SubItems(col).Text)
End If

If order = SortOrder.Descending Then
' Invert the value returned by String.Compare.
ReturnVal * = -1
End If
Return ReturnVal
End Function
</code>

/Johan


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 725
27 958
271 751
348
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies