Autor Wątek: Sortowanie listview  (Przeczytany 1654 razy)

Offline tiago

  • Użytkownik

# Czerwiec 01, 2011, 20:28:56
Witam!

Szukam po necie jak posortować listview po kolumnach. 

znalazłem coś takiego
   class ListViewItemComparer : IComparer {
            private int col;
            public ListViewItemComparer()
            {
                col = 0;
            }
            public ListViewItemComparer(int column)
            {
                col = column;
            }
            public int Compare(object x, object y)
            {
                int returnVal = -1;
                returnVal = String.Compare(((ListViewItem)x).SubItems[col].Text,
                ((ListViewItem)y).SubItems[col].Text);
                return returnVal;
            }
        }

IComparer to szablon. VS2008 wywala mi coś takiego:
Error   1   Using the generic type 'System.Collections.Generic.IComparer<T>' requires '1' type arguments   Form1.cs   17   38   Project

Jak dam tam <listViewItem> to z kolei wywala się na przypisywaniu klasy do listviewitemsortera w listviewie.

Szczerze mówiąc nigdy tego nie robiłem. W necie nigdzie nie podają typu Icomprarera. Jak to zrobić?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline kapec94

  • Użytkownik

# Czerwiec 01, 2011, 20:40:02
Jak sam napisałeś, IComparer to szablon. Czemu więc nie określiłeś typu?

class Comparer<T> : IComparer<T>

Offline ArekBal

  • Użytkownik

# Czerwiec 01, 2011, 20:46:43
A może ci potrzebny jest datagrid, a nie listview...

IComparer<> to interface generyczny a nie szablon.

dodaj ta linijkę do usingów i powinien ten kod przejść.
using System.Collections;

IComparer ma dwie wersje... generyczną i nie.

Z resztą tak zazwyczaj z tymi interfaceami jest, że jak jest wersja generyczna to zapewne jest też wersja nie generyczna.

Offline tiago

  • Użytkownik

# Czerwiec 01, 2011, 23:16:47
spróbuje najpierw ze gridem, najwyżej wróce do listviewa

@Edit:

Odnosze dziwne wrażenie, że do datagrida potrzebuje bazy danych. I się zrobi z tego niepotrzebnie wielki kombajn
« Ostatnia zmiana: Czerwiec 01, 2011, 23:18:23 wysłana przez tiago »

Offline tiago

  • Użytkownik

# Czerwiec 01, 2011, 23:27:04
IComparer<> to interface generyczny a nie szablon.

dodaj ta linijkę do usingów i powinien ten kod przejść.
using System.Collections;

IComparer ma dwie wersje... generyczną i nie.

Faktycznie domyślnie ładuje się system.collections.generic; :) dzięki!

Offline ArekBal

  • Użytkownik

# Czerwiec 01, 2011, 23:43:49
nie potrzebujesz... aczkolwiek nie jestem pewien bo sam to w silverlightcie siedziałem ostatnio duuuużo więcej.

Ale jeśli siedzisz już w .necie to przydała by ci się wiedza na temat datasourceow... doczytaj, przekonaj się.

Offline kultys

  • Użytkownik
    • Tekno Bowling Master

# Czerwiec 01, 2011, 23:49:06
do data grid na pewno nie potrzebujesz bazy, chociaż jak masz to ładnie możesz scalić ten widok z bazą. Ale możesz tak samo tworzyć sam tabele i wstawiać do niej dane.