【问题标题】:Loading datagridview in VB.NET programmatically using dataset使用数据集以编程方式在 VB.NET 中加载 datagridview
【发布时间】:2012-11-12 17:26:04
【问题描述】:

我在 VB 2010 的设计器视图中创建了一个数据网格视图 dataGridReport。 然后我使用查询来填充数据集,我希望这个数据集填充 datagridview...但它似乎不起作用。

这是我的代码:

Dim con As New OleDb.OleDbConnection
con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;
                         Data Source=C:\Users\Administrator\Documents\MenuDB.accdb"
con.Open()
Dim ds As DataSet = New DataSet
Dim adapter As New OleDb.OleDbDataAdapter
Dim sql As String

sql = @"SELECT OrderDate, MenuItem 
        FROM   MenuItems, Orders 
        WHERE  Orders.itemID = MenuItems.ID 
           AND Format(Orders.OrderDate,'mm/dd/yyyy') >= #" + fromDate + "# 
           AND Format(Orders.OrderDate,'mm/dd/yyyy') <= #" + toDate + "#"

adapter.SelectCommand = New OleDb.OleDbCommand(sql, con)
adapter.Fill(ds)
dataGridReport.DataSource = ds

我知道现在缺少一些东西 - 我环顾四周,大多数人似乎都使用 dataGridReport.DataSource = ds.Tables('somereference') 之类的东西

但我的数据集是通过连接两个表的查询动态创建的数据集,它不是存储在项目数据源中的东西。我也没有通过其属性将 datagridview 绑定到任何数据源。我错过了什么?

(顺便说一下,sql查询是正确的,我已经测试过了,返回了预期的结果)。

【问题讨论】:

    标签: vb.net datagridview dataset populate


    【解决方案1】:
    Dim con As New OleDb.OleDbConnection
    con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;
    DataSource=C:\Users\Administrator\Documents\MenuDB.accdb"
    con.Open()
    Dim ds As DataSet = New DataSet
    Dim adapter As New OleDb.OleDbDataAdapter
    Dim sql As String
    
    sql = @"SELECT OrderDate, MenuItem 
          FROM   MenuItems, Orders 
          WHERE  Orders.itemID = MenuItems.ID 
          AND Format(Orders.OrderDate,'mm/dd/yyyy') >= #" + fromDate + "# 
          AND Format(Orders.OrderDate,'mm/dd/yyyy') <= #" + toDate + "#"
    
    adapter.SelectCommand = New OleDb.OleDbCommand(sql, con)
    adapter.Fill(ds,sql)
    dataGridReport.DataSource = ds.tables(sql)
    

    【讨论】:

      【解决方案2】:
      dataGridReport.DataSource = ds.Tables("Tablename")
      

      【讨论】:

      • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
      【解决方案3】:

      可以通过索引从数据源获取表:

      dataGridReport.DataSource = ds.Tables(0)
      

      【讨论】:

      • 我试过了,但我得到了错误DataBind is not a member of System.Windows.Forms.DataGridView
      • 好的,我重试了 - 我保留了您提供的第一行,但删除了第二行,现在它可以工作了!非常感谢!如果您编辑答案以删除第二行,我将选择它作为答案。
      • @user961627:有趣的事情 - 我打算建议(即删除 DataBind),但你已经想通了。有no DataBind member for DataGridView。 :)
      • @user961627 是的,你是对的。我将它与需要显式绑定的第三方 DataGrid 控件混淆了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 2012-02-09
      相关资源
      最近更新 更多