簡體   English   中英

如何在 DataGridView 中填充 DataTable

[英]How to Populate a DataTable in a DataGridView

我創建了一個 WCF Web 服務,該服務在單擊按鈕時將簡單的 DataTable 返回到 Windows 表單。 我在 DataGridView 中顯示返回的數據時遇到問題。

這是Web服務中使用VB的代碼

    Public Function GetEmployees() As EmployeesData Implements IService1.GetEmployees

            Dim str As New String("Provider=Microsoft.ACE.OLEDB.12.0;Data Source =|DataDirectory|XXX.accdb;User Id=XXX;Password=XXX")
            Dim conn As New OleDbConnection(str)
            Dim cmd As New OleDbCommand("SELECT * FROM employees", conn)
            conn.Open()

            Dim sda = New OleDbDataAdapter

            cmd.Connection = conn
            sda.SelectCommand = cmd

            Using dt As New DataTable()
                Dim employees As New EmployeesData()
                sda.Fill(employees.EmployeesTable)
                Return employees
                conn.Close()
            End Using
        End Function
<DataContract()>
Public Class EmployeesData

    Public Sub New()
        EmployeesTable = New DataTable("EmployeesData")
    End Sub

    <DataMember()>
    Public Property EmployeesTable() As DataTable

End Class

這是在 Windows 表單中單擊按鈕結束

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

            Dim client As Service1Client = New Service1Client()

            DataGridView1.DataSource = client.GetEmployees()
            DataGridView1.AutoGenerateColumns = True

        End Sub

現在,當我單擊按鈕時,它不會將數據填充到網格中。

大概是這樣的:

DataGridView1.DataSource = client.GetEmployees()

應該是這樣的:

DataGridView1.DataSource = client.GetEmployees().EmployeesTable

您的服務器代碼應該看起來更像:

    Public Function GetEmployees() As EmployeesData Implements IEmployeesService.GetEmployees

        Dim con As New String("Provider=Microsoft.ACE.OLEDB.12.0;Data Source =|DataDirectory|XXX.accdb;User Id=XXX;Password=XXX")
        Dim cmd = "SELECT * FROM employees"

        Using sda As New OleDbDataAdapter(cmd, con)
          Dim employees As New EmployeesData()
          sda.Fill(employees.EmployeesTable)
        End Using
    End Function

和您的客戶端代碼:

    Private Sub LoadEmployeesButton_Click(sender As Object, e As EventArgs) Handles LoadEmployeesButton.Click

        Dim client = New EmployeesServiceClient()

        EmployeesDataGridView.DataSource = client.GetEmployees().Employees 

    End Sub
  • 只需給 dataadaper 一個命令字符串和一個連接字符串 - 它知道如何自己做其他所有事情,因此無需用它來弄亂你的代碼
  • 停止保留所有內容的默認名稱 - 如果您保留默認名稱,您最終會得到 Button27、Label54、TextBox38 的混亂混亂。 重命名這些東西需要幾秒鍾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM