Avatar billede Skynet Mester
21. april 2008 - 13:31 Der er 8 kommentarer og
1 løsning

Dictonary med databinding?

Hej, er der nogen der ved hvordan man kan lave databinding med en dictonary, jeg har prøvet men det virker ikke:

public dictonarytest()
        {
            InitializeComponent();

            Dictionary<int, string> fruit = new Dictionary<int, string>();
            fruit.Add(1, "Kiwi");
            fruit.Add(2, "Pear");
            fruit.Add(3, "Mango");
            fruit.Add(4, "Blueberry");
            fruit.Add(5, "Apricot");
            fruit.Add(6, "Banana");
            fruit.Add(7, "Peach");
            fruit.Add(8, "Plum");


          listBox1.DisplayMember = "Value";
          listBox1.ValueMember = "Value";
            listBox1.DataSource = fruit;
Avatar billede aaberg Nybegynder
21. april 2008 - 14:20 #1
Jeg tror ikke du kan bruge en Dictionary på den måde! lav en Fruit klasse i stedet for, og brug en BindingList<Fruit> eller en List<Fruit>.

public class Fruit
{
    public Fruit(string name, int id)
    {
        this.Name = name;
        this.id = id;
    }

    public string Name;
    public int Id;
}

public void FruidTest()
        {
            List<Fruit> fruits = new List<Fruit>();

            fruits.Add(new Fruit("Kiwi", 1));
            fruits.Add(new Fruit("Pear", 2));

            listBox1.DisplayMember = "Name";
            listBox1.ValueMember = "Id";
            ListBox1.DataSource = fruits;
        }
Avatar billede Skynet Mester
21. april 2008 - 14:48 #2
ok, tak. hvis nu jeg tilføjer mange objekter med ID 2 til listen, og jeg efterfølgende vil finde alle de navne med 2 som ID, og vise både navn og ID i en listbox, ved du hvordan koden til det skal være?
Avatar billede aaberg Nybegynder
21. april 2008 - 15:36 #3
for (int idx = 0; idx < listBox1.Items.Count; idx++)
{
    listBox1.SetSelected(idx, ((fruit)this.listBox1.Items[idx]).Id == 1);
}
Avatar billede Skynet Mester
21. april 2008 - 16:46 #4
Der sker ikke noget når jeg bruger koden?

private void button2_Click(object sender, EventArgs e)
        {
            List<Fruit> fruits = new List<Fruit>();

            fruits.Add(new Fruit("Kiwi", 1));
            fruits.Add(new Fruit("Pear", 2));
           
            for (int idx = 0; idx < listBox1.Items.Count; idx++)
            {
                listBox1.SetSelected(idx, ((Fruit)this.listBox1.Items[idx]).PropertyId == 1);
            }
Avatar billede Skynet Mester
21. april 2008 - 16:47 #5
public class Fruit               
    {
        protected string Name;
        protected int  Id;


        public Fruit(string Name, int Id)
        {
            this.Name = Name ;
           
            this.Id = Id;
        }
        public virtual string PropertyName
        {
            get { return Name ; }
            set { Name  = value; }
        }
     
        public virtual int PropertyId
        {
            get { return Id; }
            set { Id = value; }
        }
Avatar billede aaberg Nybegynder
21. april 2008 - 20:32 #6
private void button2_Click(object sender, EventArgs e)
{
    List<Fruit> fruits = new List<Fruit>();

    fruits.Add(new Fruit("Kiwi", 1));
    fruits.Add(new Fruit("Pear", 2));

    listBox1.DataSource = fruits;
    listBox1.DisplayMember = "PropertyName";   
     
    for (int idx = 0; idx < listBox1.Items.Count; idx++)
    {
        listBox1.SetSelected(idx, ((Fruit)this.listBox1.Items[idx]).PropertyId == 1);
    }
}
Avatar billede Skynet Mester
23. april 2008 - 15:47 #7
Hej

tak for svaret, jeg afprøver det lige om et par dage :)
Avatar billede Skynet Mester
22. december 2010 - 18:13 #8
ved godt det er sent jeg vender tilbage :) men smid et svar hvis du vil have points
Avatar billede aaberg Nybegynder
22. december 2010 - 21:57 #9
Svar.  :)
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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