如何在vb.net中将access中的数据添加到wpf datagrid

如何在vb.net中将access中的数据添加到wpf datagrid,vb.net,ms-access,wpfdatagrid,Vb.net,Ms Access,Wpfdatagrid,如何将access db中的数据添加到wpf数据网格中。我曾尝试使用datatable作为数据源,但它给出了一个错误。我也尝试过使用itemsource,而不是像一些来源所建议的那样使用datasource,但没有成功。实际上,在用代码填充数据表后,我被卡住了: `Dim da As New OleDb.OleDbDataAdapter("SELECT activitynm as [Activity],motonum as [Car No], " & _

如何将access db中的数据添加到wpf数据网格中。我曾尝试使用datatable作为数据源,但它给出了一个错误。我也尝试过使用itemsource,而不是像一些来源所建议的那样使用datasource,但没有成功。实际上,在用代码填充数据表后,我被卡住了:

    `Dim da As New OleDb.OleDbDataAdapter("SELECT activitynm as [Activity],motonum as [Car No], " & _
                                         "startmile as [Start mileage],stopmile as [Stop mileage],proj_code  as [Project]," & _
                                         "ac_code as [Account code],month(miledate) as [Project month], year(miledate) as [Project year]" & _
                                         " from carmileage where ac_code='""'", cnn2)
    Dim dt As New DataTable
    'fill data to datatable
    da.Fill(dt)
    //What to put here is the problem`

有人有线索。请帮助设置itemsource属性:

ID_Of_datagrid.ItemSource = dt.rows

我有解决这个问题的办法。我首先填充
ADODB.Recordset
,然后为
DataGrid
创建列。您必须将每个列绑定到记录集中的列,然后我使用
OleDb.OleDbDataAdapter
记录集
连接到
数据表
。然后设置
DataGrid.ItemsSource=DataTable.DefaultView

以下是我的代码(我还对列进行了一些字符串格式化):


我得到了这个错误“无法将'System.Data.DataTable'类型的对象强制转换为'System.Collections.IEnumerable'”当我这样做时,我的bad没有意识到Datatables不是IEnumerable。但是,它们的行集合是。
 Public Sub Polni_Tabelo()
    Dim strQuery As String ' SQL stavek 
    Dim rsADO As New ADODB.Recordset  'Recordset iz baze
    Dim col(9) As DataGridTextColumn ' Stolpci datagrid text colmns
    Dim colCheck As New DataGridCheckBoxColumn
    Dim myDataAdapter = New OleDb.OleDbDataAdapter ' adapter za prenašanje v datatable (public)
    ' Dim dr As DataRowView

    Dim textStyle = New Style(GetType(TextBlock))
    textStyle.Setters.Add(New Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap))

    rsADO.CursorLocation = ADODB.CursorLocationEnum.adUseServer  'definicija lokacije kurzorja ? poglej W3Scool
    rsADO.CursorType = ADODB.CursorTypeEnum.adOpenDynamic
    rsADO.LockType = ADODB.LockTypeEnum.adLockOptimistic
    Try
        strQuery = "SELECT" & _
                    " Po.ID_Ponudbe AS ID" & _
                    ", Po.Datum_Ponudbe AS Datum" & _
                    ", Po.St_Ponudbe AS Stevilka" & _
                    ", Podjetja.Naziv_Podjetja AS Podjetje" & _
                    ", Po.Opis" & _
                    ", Po.Cena_Ponudbe AS Cena" & _
                    ", Po.DDV" & _
                    ", Po.SALDO" & _
                    ", Materialni_Stroski AS Strošek" & _
                    ", Po.Narocilnica AS Naročilnica" & _
                    ", Po.Naroceno AS Naročeno" & _
                    " FROM Podjetja" & _
                    " INNER JOIN" & _
                    " Ponudbe AS Po ON Podjetja.ID_Podjetja = Po.ID_Podjetja"  'Stavek za branje celotne tabele materiala
        'strQuery = "SELECT * From Ponudbe Where ID_Ponudbe = 2"
        rsADO.Open(strQuery, Application.conAdo)   'polni queri preko povezave ustvarjene v mainOknu
        PonudbeDataGrid.Columns.Clear()
        'i = rsADO.RecordCount
        For i = 1 To 9

            col(i) = New DataGridTextColumn                 'definiraj nov stolpec
            col(i).Header = rsADO(i).Name                   'definiraj ime stolpca
            col(i).Binding = New Binding(rsADO(i).Name)                     'definiraj povezavo na bazo in format stolpca
            col(i).MaxWidth = 300
            Select Case i
                Case 1
                    col(i).Binding.StringFormat = "{0:dd.MM.yyyy}"
                Case 4
                    col(i).ElementStyle = textStyle
                    col(i).MaxWidth = 400
                    col(i).MinWidth = 100
                Case 5, 6, 7, 8
                    col(i).Binding.StringFormat = "{0:#,##0.00 €}" ' "x.xx0,00 €"
                Case Else

            End Select
            PonudbeDataGrid.Columns.Add(col(i))            'dodaj stolpec v datagrid
        Next


        colCheck.Header = rsADO(10).Name
        colCheck.Binding = New Binding(rsADO(10).Name)
        colCheck.CanUserResize = False
        PonudbeDataGrid.Columns.Add(colCheck)
        'MaterialDataGrid.Style.Setters.Add(New Setter(Control.VerticalAlignmentProperty, VerticalAlignment.Center))

        PonudbeDataGrid.FontSize = Convert.ToInt32(Me.Font.Text)
        PonudbeDataGrid.ColumnHeaderHeight = 30
        PonudbeDataGrid.MinRowHeight = 30


        myDataTable = New DataTable                         'ustvari novo DataTabelo 
        myDataAdapter.Fill(myDataTable, rsADO)              'polni DataTabelo z recordsetom

        With PonudbeDataGrid
            .ItemsSource = myDataTable.DefaultView          'Vnos DataTable v datagrid
        End With
        PonudbeDataGrid.UpdateLayout()

        rsADO.Close()



    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
    myDataAdapter = Nothing
    rsADO = Nothing

    myDataTable.DefaultView.Sort = "Stevilka"
End Sub