如何将类型化 DataTable 绑定到 DataGridView

发布于 2024-10-18 12:06:49 字数 654 浏览 7 评论 0原文

使用下面的代码,我尝试自定义 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);
}

With the below code, I am trying to customise the DGV without relying on the knowledge of the actual database column names. But it does not work. Can I know what is the correct way to do it? Thanks.

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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦中楼上月下 2024-10-25 12:06:49

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

或者更简单地说:这行不通,也行不通。

*= 通过 IListSource 返回 DefaultView,它是一个实现 ITypedListDataView

DataTable implements (indirectly*) ITypedList, which always takes precedence over the reflection type model. As a consequence, any properties you add are largely irrelevant for data-binding purposes, since the property definitions don't involve reflection at any point, but instead look at the columns defined on the DataTable.

Or less verbose: that won't work, and can't work.

*= via IListSource which returns the DefaultView, which is a DataView which implements ITypedList

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文