2

使用下面的代码,我试图在不依赖实际数据库列名的知识的情况下自定义 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);
}
4

1 回答 1

2

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

或者不那么冗长:那行不通,也行不通。

*= via IListSourcewhich 返回DefaultView, 这是一个DataViewwhich 实现ITypedList

于 2011-02-23T10:24:28.777 回答