如何将类型化DataTable绑定到DataGridView

时间:2011-02-23 10:01:22

标签: c# datagridview datatable datarow

使用下面的代码,我试图自定义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 个答案:

答案 0 :(得分:2)

DataTable实现(间接*)ITypedList,它始终优先于反射类型模型。因此,您添加的任何属性在很大程度上与数据绑定无关,因为属性定义在任何时候都不涉及反射,而是查看DataTable上定义的列。

或者更简洁:那不起作用,也行不通。

* =通过IListSource返回DefaultViewDataView实现ITypedList