【问题标题】:How to bind selected columns of a datatable to a datagridview如何将数据表的选定列绑定到 datagridview
【发布时间】:2016-11-19 10:42:19
【问题描述】:

我一直在寻找如何做到这一点一个小时,但我看到的只是 C# 中的答案。我想按以下顺序显示来自tbl_scancheckDatagridview1 中的数据(这些是列标题): Emp_No, DN_PickList, PickList_DT, DN_Thermal,Thermal_DT, TALLY

但是,tbl_scancheck 的顺序如下:DN_PickList, PickList_DT, DN_Thermal,Thermal_DT, TALLY, Emp_No

当前的 tbl_scancheck 订单目前正在另一个 datagridview 中使用,所以我无法在 MS Access 中手动编辑它。

这是我当前的代码:

Dim dbprovider As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = C:\Users\austin\Documents\Visual Studio 2015\Projects\ScanCheckSystem\ScanCheckSystem\bin\Debug\packerdb.accdb"
Dim myConnection As OleDbConnection = New OleDbConnection(dbprovider)
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim tables As DataTableCollection
Dim source1 As New BindingSource

Private Sub Packer_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ds = New DataSet
    tables = ds.Tables
    da = New OleDbDataAdapter("Select * from [tbl_scancheck]", myConnection)
    da.Fill(ds, "tbl_scancheck")
    Dim view As New DataView(tables(0))
    source1.DataSource = view
    DataGridView1.DataSource = view
End Sub

【问题讨论】:

  • 在设计器中按您需要的顺序在DataGridView 中创建列。将DataGridViewColumnDataProperty 设置为DataTable 中对应列的名称。并且在设置.DataSource之前的Load事件处理程序中设置DataGridView.AutoColumnGeneration = false

标签: vb.net winforms ms-access data-binding datagridview


【解决方案1】:

在您分配OleDbDataAdapter 的行中,您传入SELECT * FROM SQL 命令-

da = New OleDbDataAdapter("Select * from [tbl_scancheck]", myConnection)

既然你知道你想要的列的名称以及你想要它们的顺序,那么如果你修改 SQL 来显式地命名列,它可能会起作用吗?示例 -

da = New OleDbDataAdapter("SELECT Emp_No, DN_PickList, PickList_DT, DN_Thermal,Thermal_DT, [TALLY] FROM [tbl_scancheck]", myConnection)

【讨论】:

  • 我目前正在弄清楚 Fabio 的答案并看到了你的答案。尝试过,并且工作正常。感谢您提供简单的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多