onsdag den 15. oktober 2014

Fejl i dansk sortering (Danish Dropdown globalization culture)

Hvis man har listen:
  • 12 måneder
  • År
  • Støvle
  • Stativ
  • Tiger

Så vil en almindelig sortering gøre at listen kommer med 12 måneder, så År, og så almindelig sortering for resten. Det er fordi at oftest vil den ikke vide at "Å" skal til sidst, og derfor kommer det før de almindelige bogstaver fordi den tager det som specieltegn på samme måde som fx tal.

Så nu kan din dropdown håndtere ÆØÅ og stadig sortere korrekt. Det er altid et problem med sortering i dansk i ASP.NET eller dropdowns, eller i lister. Dette hjælper.

Det kan løses ved at fortælle hvilken culture din comparer skal sammenligne i:

Public Function Compare(ByVal o1 As Object, ByVal o2 As Object) As Integer Implements       
            System.Collections.IComparer.Compare
                    Dim cb1 As ListItem = CType(o1, ListItem)
                    Dim cb2 As ListItem = CType(o2, ListItem)
                    Dim sp As StringComparer = StringComparer.Create(New  
                            Globalization.CultureInfo("da-DK"), True)
                    Return sp.Compare(cb1.Text, cb2.Text) * _modifier
                    'Return cb1.Text.CompareTo(cb2.Text) * _modifier
End Function

Ingen kommentarer:

Send en kommentar

Kan du lide mit indlæg, har en kommentar, forslag eller andet på hjerte så skriv venligst