BindingList <T>источник данных для DataGridView - PullRequest
2 голосов
/ 24 сентября 2010

У меня есть BindingList, который я хотел бы использовать для источника данных в представлении DataGrid.
Я добавил dataGridView1 и кнопку 1 в форму.Когда я нажимаю кнопку, ничего не отображается в dataGridView.Если я использую DataTable для источника данных, он работает нормально.Я, должно быть, упускаю что-то простое.

public partial class Form1 : Form
{
    BindingList<ClassificationInfo> boundList;
    ClassificationInfo item;

    private void button1_Click(object sender, EventArgs e)
    {
        boundList = new BindingList<ClassificationInfo>();

        item = new ClassificationInfo();
        item.bExclude = 1;
        item.iColor = 123456;
        item.szDescription = "Test line 1";
        boundList.Add(item);    

        item = new ClassificationInfo();
        item.bExclude = 0;
        item.iColor = 7890123;
        item.szDescription = "Test line 2";
        item.iOrder = 2;
        boundList.Add(item);

        dataGridView1.DataSource = boundList;
    }    

    public class ClassificationInfo
    {
        public int iColor;
        public int iOrder;
        public string szDescription;
        public int bExclude;
    }
}

1 Ответ

4 голосов
/ 24 сентября 2010

Превратите ваши открытые поля в ClassificationInfo в свойства.

public class ClassificationInfo 
{ 
    public int iColor { get; set; }
    public int iOrder { get; set; }
    public string szDescription { get; set; }
    public int bExclude { get; set; }
} 

Привязка данных практически в каждом случае опирается на TypeDescriptor , который использует PropertyDescriptors для обнаружения свойств.Поля игнорируются (как и должно быть - их следует инкапсулировать), поэтому привязка данных не работает.

...