Avatar billede olf Nybegynder
29. januar 2010 - 12:36 Der er 3 kommentarer og
1 løsning

DataTextField i kompleks IDictionary

Jeg vil gerne binde en kompleks IDictionary til en liste.

Jeg har en klasse der ser således ud:
public class InfoTag
{
    public int id;
    public int parent;
    public string text;
}

Jeg har så en IDictionary der ser således ud:
IDictionary<int, InfoTag> info

Nu vil jeg gerne binde min "info" til en liste, men problemet er, at jeg ikke bare kan nøjes med at pege på "value" (som altid er "namespace.InfoTag") for jeg skal bruge værdien i "text".

ListBox dropDownList = new ListBox();
dropDownList.DataSource = info;
dropDownList.DataTextField = "Value";
dropDownList.DataValueField = "Key";

Ovenstående virker for så vidt at jeg nu får vist en liste hvor teksten er "namespace.InfoTag". I stedet vil jer have værdierne i hvad der svarer til Value.text. Men denne kan jeg ikke pege på i min DataTextField.

Nogle der ved hvordan man kan gøre det?
Avatar billede olf Nybegynder
29. januar 2010 - 13:11 #1
Vil lige nævne at jeg pt har lavet en lille funktion der kører min eksisterende info IDictionary igennem for så at returnere en mere simpel struktur (SortedList<string, int>) - men kan det gøres mere elegant vil jeg meget gerne høre om det :-)
Avatar billede platik Nybegynder
29. januar 2010 - 18:16 #2
Første del skyldes jo du finder dit objekt og ikke din objekt værdier. En måde at gøre det på er at override objektets ToString() metode. Som du jo kalder med "value".

Ex. I din InfoTag klasse lav en ny metode:

public override string ToString()
    {
        return text;
    }

Hvis det er teksten fra objektet du vil have ud.

Håber det kan bruges.
Avatar billede olf Nybegynder
29. januar 2010 - 20:39 #3
Platik - det er jo genialt - den kombination havde jeg slet ikke tænkt på :-)

Læg et svar - og du er 30 point rigere.
Avatar billede platik Nybegynder
29. januar 2010 - 21:48 #4
Kommer her :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester