winForms + DataGridView binding to a List<T>

data-binding, winforms

Solution

Is the property on the grid you are binding to Opcode as well?.. if you want to bind directly to List you would just DataSource = list. The databindings allows custom binding. are you trying to do something other than the datasource?

You are getting a bunch of empty rows? do the auto generated columns have names? Have you verified data is in the object (not just string.empty) ?

    class MyObject
    {
        public string Something { get; set; }
        public string Text { get; set; }
        public string Other { get; set; }
    }

    public Form1()
    {
        InitializeComponent();

        List<MyObject> myList = new List<MyObject>();

        for (int i = 0; i < 200; i++)
        {
            string num = i.ToString();
            myList.Add(new MyObject { Something = "Something " + num , Text = "Some Row " + num , Other = "Other " + num  });
        }

        dataGridView1.DataSource = myList;
    }

this should work fine...

Problem

I'm trying to bind a `List<T>` to a DataGridView control, and I'm not having any luck creating custom bindings. I have tried: ``` gvProgramCode.DataBindings.Add(new Binding("Opcode",code,"Opcode")); ``` It throws an exception, saying that nothing was found by that property name. The name of the column in question is "Opcode". The name of the property in the `List<T>` is Opcode. ANSWER EDIT: the problem was that I did not have the bindable fields in my class as properties, just public fields...Apparently it doesn't reflect on fields, just properties.

Original source