【发布时间】:2016-07-03 21:05:28
【问题描述】:
我创建了一个非常简单的测试来将此问题归结为常见元素。我有一个 MS Access 数据库,其中有 1 个且只有 1 个表。 2 列(ID、名称)并向表中添加了 4 行数据。以下是重现问题的步骤:
- 我在项目的数据源中添加了一个包含
DataTable的DataSet。 (从数据库中添加新的数据源) - 我添加了一个测试
Form1,其中有 1 个且只有 1 个控件,DataGridView - 我使用设计器将该网格绑定到项目数据源中的表。 (在设计时使用
DataGridView的DataSource属性)。
我的Form_Load 看起来像这样:
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'testDBDataSet.TestTable' table. You can move, or remove it, as needed.
this.testTableTableAdapter.Fill(this.testDBDataSet.TestTable);
BindingSource bs = (BindingSource)dgvTestData.DataSource;
DataTable dt = (dgvTestData.DataSource) as DataTable;
}
当我越过最后一行代码时,dt 为空。我错过了什么?
我知道这很简单而且可能很明显,但我没有看到。如果我只是将代码运行回表单,DataGridView 中有数据。
我做错了什么?如何使用上述步骤从BindingSource 中获取基础DataTable,该DataSource 设置为我的DataGridView 的DataSource?
【问题讨论】:
-
您确实需要提供minimal reproducible example。现在唯一可以说的是
dgvTestData.DataSource不是非nullDataTable。您的问题中没有任何内容显示您实际上是如何分配DataSource的,所以我们真的不能说您需要确保正确分配它的任何其他内容。 -
@Enigmativity 我编辑了这篇文章,让未来的读者更清楚地了解问题所在以及使用了哪些设置。 OP 通过设置
DataGrid的DataSource属性,使用设计器将DataGridView绑定到DataSet的DataTable。代码是自动生成的,OP 没有其他东西可以与我们分享。对于在使用数据绑定和设计器工具方面经验丰富的开发人员来说,这个案例是熟悉的,但无论如何,我也试图让其他读者更清楚地了解这个案例。希望你觉得它有用:) -
@RezaAghaei - 这根本没用。 OP 至少应该发布设置
DataSource的设计器代码。真的应该提供minimal reproducible example。如果他们这样做了,那么问题很可能会自行解决。现在这是一个有点懒惰的问题。 OP 应该尽一切努力使问题易于回答。 -
@Enigmativity 对于有经验的用户来说,IMO 就足够了 :)
-
@RezaAghaei 是的,这可能是真的,但是 SO 作为存储库存在,供没有经验的用户查找高质量问题和答案的库。经验丰富的用户,几乎按照定义,已经知道答案。
标签: c# winforms datagridview