0

アクセス データベースから wpf データグリッドにデータを追加するにはどうすればよいですか。datatable をデータソースとして使用しようとしましたが、エラーが発生します。また、一部の情報源が示唆しているように、データソースの代わりに itemsource を使用しようとしましたが、無駄でした。実際、データテーブルにコードを入力した後、私は立ち往生しています:

    `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`

誰かが手がかりを持っています。助けてください

4

2 に答える 2

0

itemsource プロパティを設定します。

ID_Of_datagrid.ItemSource = dt.rows

シンプルなバインディングを示すチュートリアルと、シンプルなバインディングを示す別のチュートリアル

于 2013-01-14T17:38:35.190 に答える
0

私はこれに対する解決策を持っています。最初に を埋めADODB.Recordsetてから、 の列を作成しますDataGrid。各列を Recordset の列にバインドする必要があります。次に、OleDb.OleDbDataAdapterに接続するために使用しRecordsetていDataTableます。次に、を設定しDataGrid.ItemsSource = DataTable.DefaultViewます。

これが私のコードです(列にもいくつかの文字列フォーマットを行います):

 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
于 2015-05-06T15:23:43.977 に答える