0

I have function that fills ListBox:

private void fillWorkListBox()
{
    this.list = manager.works();
    this.listBox1.DisplayMember = "Название";
    this.listBox1.ValueMember = "ID";

    for (var i = 0; i < this.list.works.Count; i++)
    {
        string name = "№" + this.list.works[i].id + " - " + this.list.works[i].name;

        WorkModel work = new WorkModel();
        work.name = name;
        work.id = this.list.works[i].id;

        listBox1.Items.Add(work);

    }
}

Model is:

class WorkModel
{
    public string name { get; set; }
    public int id { get; set; }
}

When I have run project I see type of object model work in ListBox. Instead name and key as id.

How to fix it?

4
  • I guess that's because your WorkModel has neither a property called Название nor one called ID. It only has name and id. The names you give in DisplayMember and ValueMember must match properties in your model. Commented Aug 10, 2017 at 16:30
  • it should be name, id from model? Commented Aug 10, 2017 at 16:34
  • yes of course, what else did you intend? but I just checked: casing is not important, so Name and IDshould also work. Commented Aug 10, 2017 at 16:35
  • It works: ` this.listBox1.DisplayMember = "name"; this.listBox1.ValueMember = "id";` Commented Aug 10, 2017 at 16:37

2 Answers 2

1
private void fillWorkListBox()
        {
            IList<WorkModel> managerWorks = new List<WorkModel>
            {
                new WorkModel {name="fooNameOne",id=1 },
                new WorkModel {name="fooNameTwo",id=2 }
            };

            listBox1.DisplayMember = "Название";
            listBox1.ValueMember = "ID";

            WorkModel workModel = new WorkModel();

            for (var i = 0; i < managerWorks.Count; i++)
            {
                string name = "№" + managerWorks[i].id + " - " + managerWorks[i].name;

                workModel.name = name;
                workModel.id = managerWorks[i].id;
                listBox1.Items.Add("Name:" + workModel.name + "Id:" + workModel.id.ToString());
            }
        }
Sign up to request clarification or add additional context in comments.

Comments

1

Instead of adding work object directly to the list box.

Do something like below. If you want ID to be displayed, You can append ID too (You may need to convert to string before appending)

listBox1.Items.Add("Name: " + work.name + "Key: " + Convert.ToString(work.id));

3 Comments

I need to set also key as id. This case does not fit
Append key by adding as shown . listBox1.Items.Add("Name: " + work.name + "Key: " + Convert.ToString(work.id ) );
@Daniel Edited answer for your requirement.... Ofcourse you can customize it, in whatever way you want.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.