Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sortable binding IList<T>

[es] :: .NET :: Sortable binding IList<T>

[ Pregleda: 2790 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
..et.174.106.194.in-addr.arpa.



+2 Profil

icon Sortable binding IList<T>06.06.2008. u 15:04 - pre 193 meseci
Potrebno mi je da na datagridview bindujem IList<T> i imam mogućnost sortiranja kada kliknem na header.
Pogledao sam nešto slično na http://www.timvw.be/presenting-the-sortablebindinglistt/ ali ta klasa radi samo sa List kolekcijom i sortiranje ne radi kako treba.
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.ptt.yu.



+395 Profil

icon Re: Sortable binding IList<T>06.06.2008. u 15:53 - pre 193 meseci
Probaj odavde :
http://dotnetslackers.com/comm...generic-List_3C00_T_3E00_.aspx
Viva lollapalooza
 
Odgovor na temu

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
..et.174.106.194.in-addr.arpa.



+2 Profil

icon Re: Sortable binding IList<T>09.06.2008. u 08:19 - pre 193 meseci
Nije mnogo pomoglo...
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

logic_rabbit
Radenko Zec
banjaluka

Član broj: 74458
Poruke: 271
*.lanaco.com.



+1 Profil

icon Re: Sortable binding IList<T>09.06.2008. u 08:51 - pre 193 meseci
Rijesenje ti je na onom tvom prvom linku.
Kreiraj svoju klasu, nazovi je SortabilnaLista npr.
implementiraj IList ako hoces ili nasljedi neku listu.
Odradi override kao i ovaj covjek u primjeru i napravi sve isto kao on...
I nakraju ako ti treba interfejs napravi interfejs svoje klase
i nazovi ga ISortabilnaLista.

Meni je ovaj isti kod radio...
logic_rabbit (MCAD,MCSD,MCT,MCTS-
Windows development,MCPD)
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.ptt.yu.



+395 Profil

icon Re: Sortable binding IList<T>09.06.2008. u 09:12 - pre 193 meseci
Citat:
Pharos: Nije mnogo pomoglo...

Razlog ???

Napravis jednu sortabilnu klasu sa static metodama od kojih ce svaka raditi sort za odredjenu kolonu ..

Code:

public class ProductSorting : IComparable<Product>
{     

 public static Comparison<Product> PriceComparison =      
  delegate(Product p1, Product p2) 
       {            return p1.Price.CompareTo(p2.Price);       
 };    

public static Comparison<Product> IDComparison =        
delegate(Product p1, Product p2)   
{  
 return p1.ProductID.CompareTo(p2.ProductID);    
   
};  

public int CompareTo(Product other)   
{        
return ProductName.CompareTo(other.ProductName);  

}


}
//negde u kodu 

List<Product> items = new List<Product>() ; 
items.Add(...) ; 
..
..
items.Sort(ProductSorting.IDComparison) ;
items.Sort(ProductSorting.PriceComparison ) ;


Viva lollapalooza
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Sortable binding IList<T>09.06.2008. u 10:18 - pre 193 meseci
Milim da znam zasto mu to ne pomaze, on ne radi sa svojim List<T> instancama, radi sa IList<T> interfejsom (mozda ga je dobio iz nekog business layer-a). A IList<T> nema sort.

Resenje je medjutim veoma jednostavno, nema potrebe da se kreiraju posebne klase, samo se iz IList<T> napravi List<T> kroz ToList() metod. Onda na toj listi moze da se radi sortiranje kao sto ste predlozili. A moze i ad izvuce IEnumerable<T> iz IList<T> i da nad njim pozove OrderBy(labda) metod da dobije sortirani IEnumerable, bez ikakvih IComparable<T> klasa.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Sortable binding IList<T>09.06.2008. u 12:51 - pre 193 meseci
Evo ti dva primera sortiranja IList<T>:

Code:

    class Person
    {
        public int ID; public string ime;
    }

    class Program
    {
        static void Main(string[] args)
        {
            IList<Person> ilista = new List<Person>() { new Person() { ID = 12, ime = "Pera"},
                                                        new Person() { ID = 1, ime = "Zika"},
                                                        new Person() { ID = 7, ime = "Aska"}};

            string imePolja = "ID";
            FieldInfo field = ilista.GetType().GetGenericArguments()[0].GetField(imePolja);
            var sortedlista = (from p in ilista
                               orderby field.GetValue(p)
                               select p).ToList();

            var sortedlista2 = ilista.AsEnumerable().OrderBy(x => x.ime).ToList();
        }
    }


Oba u principu koriste IEnumerable<T>.OrderBy() za sortiranje, samo sto sortedlista koristi kroz LINQ to Objects, a sortedlista2 kroz direktan poziv ekstenzije. Takodje, sortedlista moze da se koristi univerzalno posto koristi refleksiju (imePolja moze da ti bude ime polje na koje je korisnik kliknuo u headeru tako da ne moras da imas poseban kod za svako posebno polje, sto je slucaj sa sortedlista2. Cena univerzalnosti je sto moras kroz refleksiju, i sto za property moras da koristis PropertyInfo umesto FieldInfo.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: Sortable binding IList<T>

[ Pregleda: 2790 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.