使用下面的代码,我试图自定义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);
}
答案 0 :(得分:2)
DataTable
实现(间接*)ITypedList
,它始终优先于反射类型模型。因此,您添加的任何属性在很大程度上与数据绑定无关,因为属性定义在任何时候都不涉及反射,而是查看DataTable
上定义的列。
或者更简洁:那不起作用,也行不通。
* =通过IListSource
返回DefaultView
,DataView
实现ITypedList