【发布时间】:2020-04-30 03:40:37
【问题描述】:
BindingList<Item> itemList = new BindingList<Item>();
foreach (Item item in po.Items)
{
itemList.Add(item);
}
==> dgvItems.DataSource = itemList;
dgvItems.Columns["ItemId"].Visible = false;
当我运行我的程序时,它会在我用“==>”标记的行中抛出错误,我不知道错误来自哪里,因为当我调试列表时包含有效数据。它以前工作过,所以我认为出现错误是因为我对时间戳存储库代码进行了一些更改。
这是我的 Item 对象定义:
public class Item
{
public byte[] TimeStamp { get; set; }
public int ItemId { get; set; }
[Required(ErrorMessage = "Item Name is required")]
public string Name { get; set; }
[Required(ErrorMessage = "Description is required")]
public string Description { get; set; }
[Required(ErrorMessage = "Price is required")]
public decimal Price { get; set; }
[Required(ErrorMessage = "Location is required")]
public string Location { get; set; }
//public byte[] TimeStamp { get; set; }
[Required(ErrorMessage = "Justification is required")]
public string Justification { get; set; }
[Required(ErrorMessage = "Quantity is required")]
public int Quantity { get; set; }
public int PurchaseOrderId { get; set; }
public DateTime Date { get; set; }
public ItemStatus Status { get; set; }
public Item()
{
}
public Item(int itemId, string name, string description, decimal price, string location, string justification, int quantity, int purchaseOrderId, DateTime date, ItemStatus status)
{
ItemId = itemId;
Name = name;
Description = description;
Price = price;
Location = location;
Justification = justification;
Quantity = quantity;
PurchaseOrderId = purchaseOrderId;
Date = date;
Status = status;
}
}
【问题讨论】:
-
发布
Item对象定义。顺便说一句,您可以使用var itemList = new BindingList<Item>(po.Items);填充 BindingList -
我认为时间戳与 datagridview 冲突,它可能无法显示,有什么办法吗?并感谢您的建议
-
当您在不使用任何类型转换器的情况下向 DGV 提供字节数组时,DGV 会尝试从中生成位图。当然它失败了,因此错误。 Item 的构造函数甚至不包括 TimeStamp 属性。您希望如何在网格中看到此属性?你真的需要看到这个值吗?如果它应该是可见的,它也应该是可编辑的吗?您是在 DGV 设计器中创建了相应的列还是自动生成了列?
-
我不需要看值,列是自动生成的