我是将datagridviews绑定到数据集的新手。我有一个创建的数据集,并且(我认为)用sql server DB中的表填充它。但是当我尝试填充datagridview时,它只显示一个空白的7列表,其列标题如Column1,Column2等。我确定我错过了一些愚蠢的东西,但不要去哪里开始看。有谁看到了什么问题?
值得一提:sql server上的表不是空白的。
添加initializeComponent 不解决它,就像在这篇文章DataGridView Rows Empty when set to DataSet
修改 好像我的数据集没有被填满。 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
数据集
答案 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的另一个问题: