C# Custom sorting treeview/SortedList

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • VAnTurenhout
  • Registratie: September 2004
  • Laatst online: 09-02-2024
Ik heb een stuk bestaande code, waarin een treeview gevuld wordt op basis van een sorted list collection:
In de database staan de volgende velden:

code:
1
2
3
4
5
6
7
8
SQLID - NAME - Parent - Description
1 - eerste - - A. Dit is de eerste
2 - a.eerste sub - 1 - A.Sub van de eerste
3 - b.tweede sub - 1 - B.Nog een sub van de eerste
4 - tweede - - B. Dit is de tweede
5 - e.eerste sub - 2 - E. Sub van tweede
6 - c.tweede sub - 2 -  C. Weer een Sub van tweede
6 - d.derde sub - 2 -  D. Alweer een Sub van tweede



Eerst wordt de data uit een database opgehaald in een datatable. Vervolgens wordt elke row uit de datatable in de sortedlist gezet dmv een foreach

Als ik de sortedlist mag geloven wordt een collectie aangemaakt op basis van de ID:

code:
1
2
3
4
5
6
  sortedList = new sortedList();

foreach (DataRow row in t.Rows)
{
sortedList.Add(row[0], row[1]);
}



Vervolgens wordt de treeview weer gevuld:

code:
1
2
3
4
foreach (DictionaryEntry de in sortedList)
{
node = tv.Nodes[de.Parent].Nodes.Add(de.SQLID.ToString(), lItem.Name + " (" + de.Description.ToString() + ")");
}


Er is wat code weggelaten voor de leesbaarheid, maar ik hoop dat dit het een beetje duidelijk maakt.

Mijn treeview ziet er nu zo uit:

code:
1
2
3
4
5
6
7
eerste
    a.eerste sub
    b.tweede sub
tweede
    e.eerste sub
    c.tweede sub
    d.derde sub



Mijn vraag is nu.. Ik zou graag de treeview gesorteerd willen zien op de waardes in de kolom "Name" en niet gesorteerd op de kolom "ID"

code:
1
2
3
4
5
6
7
eerste
    a.eerste sub
    b.tweede sub
tweede
    c.tweede sub
    d.derde sub
    e.eerste sub


Ik kan uiteraard wel wat dingen aanpassen, maar moet eigenlijk de Sortedlist methode zo laten, en zal iets moeten aanpassen voor dat de treeview gevuld wordt.

Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Gewoon een custom comparer meegeven aan je SortedList. ( MSDN: SortedList Constructor (IComparer) (System.Collections) )

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 11-09 22:33
+1. Dit werkt overigens voor alle vormen van sorteren bij objecten of collecties.

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 10:02
Kan je dit niet simpel oplossen door LINQ order by en then keywoord? Zoals:

C#:
1
var movies = _db.Movies.Orderby(c => c.Category).ThenBy(n => n.Name)


En daarna mogelijk naar een list, of wat je nodig hebt ;)