为什么我的数据网格视图在我将数据源设置为我的数据集时只显示空行

时间:2012-04-19 16:46:21

标签: .net winforms

我是将datagridviews绑定到数据集的新手。我有一个创建的数据集,并且(我认为)用sql server DB中的表填充它。但是当我尝试填充datagridview时,它只显示一个空白的7列表,其列标题如Column1,Column2等。我确定我错过了一些愚蠢的东西,但不要去哪里开始看。有谁看到了什么问题?

修改 好像我的数据集没有被填满。 Dataset1.tables(0)中没有行。从GUI看起来有一种叫做AverageWeeklyLabsTableAdapter的东西(见下图)。我想我假设数据集就像LINQ to SQL一样,对象只是自动填充数据,但是你可能需要调用代码来填充数据集吗?

on load事件......

    Dim myBindingSource As BindingSource = New BindingSource
    myBindingSource.DataSource = DataSet1.Tables(0) //has no rows
    DataGridView1.DataSource = myBindingSource
    DataGridView1.ReadOnly = True

数据集

enter image description here

1 个答案:

答案 0 :(得分:1)

当我将数据加载到datagridview时,我使用的是BindingSource,但是从您的有限代码中看,它看起来并不像您那样做。

因此,您可以使用表格数据填充DataSet,然后使用您的数据加载BindingSource,类似于此(代码简称为简洁代码):

dataAdapter.Fill(table); 
bindingSource1.DataSource = table;
datagridview1.DataSource = bindingSource1;

根据您的编辑,您似乎并未真正填充数据。您必须使用表适配器中的Fill来从数据库中获取数据。此外,.net将期望数据表的特定对象类型(基于数据集)类似:

var adapter = new AverageWeeklyLabsTableAdapter();
var dataTable = new myForm.DataSet1.AverageWeeklyLabsDataTable
adapter.Fill(dataTable);
bindingSource1.DataSource = dataTable;
datagridview1.DataSource = bindingSource1;

以下是关于tableadapters的另一个问题:

What do C# Table Adapters actually return?