【问题标题】:why does my datagrid view show only blank rows when I set it's datasource to my dataset为什么当我将它的数据源设置为我的数据集时,我的数据网格视图只显示空白行
【发布时间】:2012-04-20 23:14:15
【问题描述】:

我对将 datagridviews 绑定到数据集是全新的。我创建了一个数据集,并且(我认为)用来自 sql server 数据库的表填充了它。但是,当我尝试填充 datagridview 时,它只显示一个空白的 7 列表,其中包含 Column1、Column2 等列标题。我确定我错过了一些愚蠢的东西,但不知道从哪里开始看。有人看到有什么问题吗?

编辑 我的数据集似乎没有被填满。 Dataset1.tables(0) 中没有行。从 GUI 看起来有一个叫做 AverageWeeklyLabsTableAdapter 的东西(见下图)。我想我假设数据集像 LINQ to SQL 一样工作,其中对象只是自动填充数据,但也许您需要调用代码来填充数据集?

加载事件...

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

数据集

【问题讨论】:

    标签: .net winforms


    【解决方案1】:

    当我将数据加载到datagridview 时,我使用了BindingSource,但从您有限的代码来看,您似乎并没有这样做。

    因此,您将使用表格数据填充您的DataSet,然后使用您的数据加载您的BindingSource,类似于此(为简洁起见缩短代码):

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

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

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

    这是关于表格适配器的另一个问题:

    What do C# Table Adapters actually return?

    【讨论】:

    • 谢谢,但这段代码不走运... Dim myBindingSource As BindingSource = New BindingSource myBindingSource.DataSource = DataSet1.Tables(0) DataGridView1.DataSource = myBindingSource DataGridView1.ReadOnly = True
    • 如果你放置一个断点,你真的有从你的查询返回的数据吗?
    • DataSet1.Tables(0) 没有行
    • 你能用更多代码编辑你的 OP 吗?听起来您可能在其他地方有错误。
    猜你喜欢
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2011-07-29
    • 2018-02-13
    • 1970-01-01
    相关资源
    最近更新 更多