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