[C#] listview sortowanie

0

Witam,

  Mam problem z sortowaniem listview. Korzystam z ICCompare http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q319401 ale te sortowanie sortuje alfabetycznie(12345,111,23 itd). Chciałbym aby w dwóch kolumnach sortowało numerycznie a reszta alfabetycznie. Jest jeszcze jeden problem gdy posortuje listviewa gdy działa wątek który coś dodaje co 10 sec to posortowaniu program się zawiesza. Co jest?
0

Co do sortowania to nie ma problemu. Dopisz sobie jakąś zmienną (np. listę intów) która będzie trzymała informację którą kolumnę sortować jako string lub liczbę i będziesz miał po kłopocie.

Ja używałem czegoś takiego:

 public int Compare(object x, object y)
        {
            ListViewItem columnA = (ListViewItem)x;
            ListViewItem columnB = (ListViewItem)y;
            
            if(CurrentColumn==2 || CurrentColumn==3)
            {
                     return
                String.Compare(columnB.SubItems[CurrentColumn].Text, columnA.SubItems[CurrentColumn].Text);
            }

            uint c0_1 = 0;
            uint c0_2 = 0;
            if (columnA.SubItems[CurrentColumn].Text.Split('-').Length<3 && UInt32.TryParse(columnB.SubItems[CurrentColumn].Text.Split('-')[0], out c0_1) && UInt32.TryParse(columnA.SubItems[CurrentColumn].Text.Split('-')[0], out c0_2))
            {
                    if (c0_1 > c0_2)
                        return 1;
                    if (c0_1 < c0_2)
                        return -1;
                    if (c0_1 == c0_2)
                        return 0;
                   

            }
            else
            {
                return
                String.Compare(columnB.SubItems[CurrentColumn].Text, columnA.SubItems[CurrentColumn].Text);
            }
            return 0;
           
        }

Moja mała uwaga. Czasem lepiej zastanowić się nad DataGridView. Sortowanie miał byś załatwione od razu i nie musiał byś się za bardzo przejmować i modyfikować funkcji do sortowania. A przy dodawaniu/usuwaniu/modyfikowaniu elementów było by mniej problemów (ale to tylko taka moja uwaga)
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1