我有一个使用 TableAdapter
构建的自定义类列表.
我想将这些添加到 DataGridView
仅绑定(bind)某些列。
我试过下面的代码来填充和绑定(bind)数据:
lAllBookings = (From r As DataRow In BookingsTableAdapter1.GetDataWithItems().Rows
Select New Booking With {.bookingID = r.Item("BookingID"), _
.itemID = r.Item("ItemID"), _
.bookedOutDate = r.Field(Of DateTime?)("BookedOutDate"), _
.bookedInDate = r.Field(Of DateTime?)("BookedInDate"), _
.identType = r.Item("IdentType"), _
.identString = r.Item("IdentString"), _
.image = r.Item("Image"), _
.complete = r.Item("Complete"), _
.notes = r.Item("Notes"), _
.itemName = r.Item("ItemName"), _
.itemBC = r.Item("ItemBarcode")}).ToList
dgvBookings.Columns("BookingID").DataPropertyName = "bookingID"
dgvBookings.Columns("ItemIdent").DataPropertyName = "itemName"
dgvBookings.Columns("BookedOut").DataPropertyName = "bookedOutDate"
dgvBookings.Columns("IdentString").DataPropertyName = "identString"
dgvBookings.DataSource = lAllBookings
现在,当我这样做时,我得到了正确的行数,但所有字段都是空白的。
我已经完成了一些关于 SO 的问题和一些教程,但它们所做的事情似乎都与我需要的略有不同。
有什么方法可以填写 DataGridView
使用我的元素 list ?
我宁愿避免使用 DataSet
如果可以的话,因为我已经在此 List<Of Class>
上构建了很多其他代码类型。
编辑 - 这是类 Booking
声明:
Public Class Booking
Public bookingID As Integer
Public itemID As Integer
Public itemName As String
Public itemBC As String
Public identType As Short
Public identString As String
Public image As Byte()
Public complete As Boolean
Public notes As String
Public bookedInDate As DateTime?
Public bookedOutDate As DateTime?
End Class
最佳答案
我知道你真的迟到了,但也许它可以帮助别人。
我遇到了和你一样的问题,但使用的是 vb.net。
最后我找到了解决方案:您的类没有公开属性而是公开变量。绑定(bind)系统查找属性但找不到它们,因此您得到空行。
尝试通过添加 {get; 来完成你的类(class)设置;
(如果使用 vb.net,则为 Property 属性),一切都会正常工作。
希望对您有所帮助。
关于vb.net - 如何将 DataGridView 绑定(bind)到自定义类列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18056293/