Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to display comboBox value instead displaying name of objects

About 3 hours I am trying to solve this issue. My combo box display to me name of object instead a value for example: A

enter image description here

This is my class:

namespace Supermarket
{
    public class WhareHouseTable
    {
        public string name { get; set; }
        public double cost { get; set; }
        public string offer { get; set; }
    }
}

And here is my code:

private void Form1_Load(object sender, EventArgs e)
{
    List<WhareHouseTable> product = new List<WhareHouseTable>();
    product.Add(new WhareHouseTable { name = "A", cost = 0.63, offer = "Buy 2 for the price of 1" });
    product.Add(new WhareHouseTable { name = "B", cost = 0.20 });
    product.Add(new WhareHouseTable { name = "C", cost = 0.74, offer = "Buy 2; get B half price" });
    product.Add(new WhareHouseTable { name = "D", cost = 0.11 });
    product.Add(new WhareHouseTable { name = "E", cost = 0.50, offer = "Buy 3 for the price of 2" });
    product.Add(new WhareHouseTable { name = "F", cost = 0.40 });

    comboBox2.DataSource = product;
    comboBox2.DropDownStyle = ComboBoxStyle.DropDownList;

    source.DataSource = product;

    foreach (var selected in product)
    {
        comboBox2.Text = selected.name;
        itemCostLabel.Text = selected.cost.ToString();
        offerLabel.Text = selected.offer;
    }
}

In foreach I am trying to get all products and represent them in comboBox and in labels.

What can I do in this situation?

like image 401
BinaryTie Avatar asked Apr 01 '16 13:04

BinaryTie


2 Answers

You need to specify one of the properties in the bound source as its DisplayMember which is going to be displayed and same or another property as its ValueMember which you can access through selectedItem.Value

  comboBox2.DisplayMember = "Name";
  comboBox2.ValueMember = "Name";
like image 157
sujith karivelil Avatar answered Sep 17 '22 12:09

sujith karivelil


You should override toString() method of the class like this:

public override String toString(){
    return name;
}
like image 31
Waow Avatar answered Sep 17 '22 12:09

Waow