Как связать типизированный DataTable с DataGridView - PullRequest
2 голосов
/ 23 февраля 2011

С помощью приведенного ниже кода я пытаюсь настроить DGV, не полагаясь на знание фактических имен столбцов базы данных. Но это не работает. Могу ли я узнать, как правильно это сделать? Спасибо.

public class MyDataTable : DataTable { ... }

public class MyDataRow : DataRow 
{
    public FirstProperty { get; set; }
    public SecondProperty { get; set; }
    public ThirdProperty { get; set; }
}

void LoadDataGridView()
{
    DataGridViewTextColumn colFirst = new DataGridViewTextColumn();

    dgv.AutoGenerateColumns = false;
    ...
    colFirst.HeaderText = "First Property";
    colFirst.DataPropertyName = "FirstProperty"; // doesnt work ?
    ...
    ...
    dgv.Columns.AddRange = { ... };
    dgv.DataSource = new BindingSource(mydatatable);
}

1 Ответ

2 голосов
/ 23 февраля 2011

DataTable реализует (косвенно *) ITypedList, что всегда имеет приоритет над моделью типа отражения.Как следствие, любые добавляемые вами свойства в значительной степени не имеют значения для привязки данных, поскольку определения свойств не включают отражение ни в одной точке, а вместо этого смотрят на столбцы, определенные в DataTable.

.менее многословно: это не сработает и не сработает.

* = через IListSource, который возвращает DefaultView, то есть DataView, который реализует ITypedList

...