【发布时间】:2020-06-06 14:23:37
【问题描述】:
我创建了一个 WCF Web 服务,它在单击按钮时将一个简单的 DataTable 返回到一个 Windows 窗体。 我在 DataGridView 中显示返回的数据时遇到问题。
这是使用VB的Web服务中的代码
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
现在,当我单击按钮时,它不会将数据填充到网格中。
【问题讨论】:
-
在设置
DataSource后将AutoGenerateColumns设置为True并没有什么意义。默认情况下它已经是True,因此设置它的唯一原因是如果您不想在设置DataSource时自动生成列,在这种情况下您可以将其设置为False。 -
您不需要打开/关闭连接;数据适配器知道如何自行完成。此外,在 return 语句之后关闭并没有什么意义......
标签: vb.net winforms data-binding datagridview