VB.NET WPF正确填充datagrid
我希望从表中提取数据,然后将其添加到列表中,然后使用该列表填充datagrid;然而,在执行此操作时,我在网格上得到了错误的填充,尽管我知道我正在访问循环中的正确记录 这是我的密码:VB.NET WPF正确填充datagrid,wpf,vb.net,datagrid,Wpf,Vb.net,Datagrid,我希望从表中提取数据,然后将其添加到列表中,然后使用该列表填充datagrid;然而,在执行此操作时,我在网格上得到了错误的填充,尽管我知道我正在访问循环中的正确记录 这是我的密码: Public Class Room Private _RoomNumber As String Public Property RoomNumber As String Get Return _RoomNumber End Get
Public Class Room
Private _RoomNumber As String
Public Property RoomNumber As String
Get
Return _RoomNumber
End Get
Set(ByVal value As String)
_RoomNumber = value
End Set
End Property
Private _PatientName As String
Public Property PatientName As String
Get
Return _PatientName
End Get
Set(value As String)
_PatientName = value
End Set
End Property
Private _Physician As String
Public Property Physician As String
Get
Return _Physician
End Get
Set(value As String)
_Physician = value
End Set
End Property
Private _Nurse As String
Public Property Nurse As String
Get
Return _Nurse
End Get
Set(value As String)
_Nurse = value
End Set
End Property
Private _SchedTime As String
Public Property SchedTime As String
Get
Return _SchedTime
End Get
Set(value As String)
_SchedTime = value
End Set
End Property
Private _ArrivalTime As String
Public Property ArrivalTime As String
Get
Return _ArrivalTime
End Get
Set(value As String)
_ArrivalTime = value
End Set
End Property
Private _ES As String
Public Property ES As String
Get
Return _ES
End Get
Set(value As String)
_ES = value
End Set
End Property
End Class
Private Sub loadPage() Handles MyBase.Loaded
Dim newList As New List(Of Room)
newList = getData()
MedDayDataGrid.ItemsSource = newList
End Sub
Private Function getData() As List(Of Room)
Dim connection As New ODBCConnection() //Left this out for obv reasons
connection.Open()
Dim query As String = "SELECT visit.visit_name, visit.visit_admit_date, visit.visit_id, ip_visit_1.ipv1_room FROM visit INNER JOIN ip_visit_1 ON visit.visit_id=ip_visit_1.ipv1_num WHERE visit.visit_disch_date = '0001-01-01' AND ip_visit_1.ipv1_room LIKE 'MDH%' ORDER BY ip_visit_1.ipv1_room"
Dim myCommand As New OdbcCommand(query, connection)
Dim myRoom As New Room
Dim myList As New List(Of Room)
Dim myReader As OdbcDataReader = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
While myReader.Read()
myRoom.RoomNumber = myReader.GetString(3)
myRoom.PatientName = myReader.GetString(0)
End While
myReader.Close()
connection.Close()
connection = Nothing
Return myList
End Function
返回的数据在我的网格上20次显示添加到列表中的最后记录,而不是在getData()函数中显示添加到列表中的20个单独房间中的每个房间。任何帮助都将不胜感激。您需要为查询返回的每一行创建一个新的
房间
实例,并将其添加到列表
,例如
Private Function getData() As List(Of Room)
Dim connection As New ODBCConnection() //Left this out for obv reasons
connection.Open()
Dim query As String = "SELECT visit.visit_name, visit.visit_admit_date, visit.visit_id, ip_visit_1.ipv1_room FROM visit INNER JOIN ip_visit_1 ON visit.visit_id=ip_visit_1.ipv1_num WHERE visit.visit_disch_date = '0001-01-01' AND ip_visit_1.ipv1_room LIKE 'MDH%' ORDER BY ip_visit_1.ipv1_room"
Dim myCommand As New OdbcCommand(query, connection)
Dim myList As New List(Of Room)
Dim myReader As OdbcDataReader = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
While myReader.Read()
Dim myRoom As New Room
myRoom.RoomNumber = myReader.GetString(3)
myRoom.PatientName = myReader.GetString(0)
myList.Add(myRoom)
End While
myReader.Close()
connection.Close()
connection = Nothing
Return myList
End Function
您需要为查询返回的每一行创建一个新的
Room
实例,并将其添加到列表中,例如
Private Function getData() As List(Of Room)
Dim connection As New ODBCConnection() //Left this out for obv reasons
connection.Open()
Dim query As String = "SELECT visit.visit_name, visit.visit_admit_date, visit.visit_id, ip_visit_1.ipv1_room FROM visit INNER JOIN ip_visit_1 ON visit.visit_id=ip_visit_1.ipv1_num WHERE visit.visit_disch_date = '0001-01-01' AND ip_visit_1.ipv1_room LIKE 'MDH%' ORDER BY ip_visit_1.ipv1_room"
Dim myCommand As New OdbcCommand(query, connection)
Dim myList As New List(Of Room)
Dim myReader As OdbcDataReader = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
While myReader.Read()
Dim myRoom As New Room
myRoom.RoomNumber = myReader.GetString(3)
myRoom.PatientName = myReader.GetString(0)
myList.Add(myRoom)
End While
myReader.Close()
connection.Close()
connection = Nothing
Return myList
End Function
我根本看不出你是如何显示任何数据的。在getData
中,您似乎没有向myList
添加任何内容。问题中是否遗漏了一些代码?假设某个地方有一个Add
,您的问题可能是您没有为每一行创建一个新的Room
,并且正在为每一行重用相同的实例-从而将相同的实例添加到列表中20次,每次都会覆盖这些值-导致为所有项目设置最后一行的值,因为它们实际上是同一个对象。很抱歉,我在调试时意外遗漏了我的外接程序。我的add在myreader.read()的while循环中。你的回答正是我需要的。我并不是每次都创建一个新的房间实例。我根本看不出你是如何得到任何显示的数据的。在getData
中,您似乎没有向myList
添加任何内容。问题中是否遗漏了一些代码?假设某个地方有一个Add
,您的问题可能是您没有为每一行创建一个新的Room
,并且正在为每一行重用相同的实例-从而将相同的实例添加到列表中20次,每次都会覆盖这些值-导致为所有项目设置最后一行的值,因为它们实际上是同一个对象。很抱歉,我在调试时意外遗漏了我的外接程序。我的add在myreader.read()的while循环中。你的回答正是我需要的。我并不是每次都创建房间的新实例。