我是C#的新手,我正在尝试将对象列表输入到datagridview中。每次单击按钮时,我都会不断地将项添加到此列表中,并且datagridview应该通过将其数据源设置回列表来刷新。
以下是清单:
List<Models.OrderItem> orderitemlist = new List<Models.OrderItem>();
以下是添加到列表并刷新列表的代码:
private void btnAddToOrder_Click(object sender, EventArgs e)
{
int quantity = Convert.ToInt32(tbAddOrderQuantity.Text);
int stock = Convert.ToInt32(ItemDataGrid.CurrentRow.Cells[6].Value);
int newstock = stock - quantity;
if (newstock < 0)
MessageBox.Show("You do not have enough items in stock for this.");
else
{
ItemDataGrid.CurrentRow.Cells[6].Value = newstock;
int itemID = Convert.ToInt32(ItemDataGrid.CurrentRow.Cells[0].Value);
string itemname = Convert.ToString(ItemDataGrid.CurrentRow.Cells[1].Value);
int sellprice = Convert.ToInt32(ItemDataGrid.CurrentRow.Cells[5].Value);
Models.OrderItem item = new Models.OrderItem(itemID, itemname, sellprice, quantity);
orderitemlist.Add(item);
RefreshItemsOnOrderData();
RefreshPrice();
}
}
private void RefreshItemsOnOrderData()
{
ItemOnOrderDataGrid.DataSource = orderitemlist;
}
列表将使用第一项更新,但是当我尝试添加另一项时,它似乎运行代码块,但实际上并没有将它添加到datagrid视图。有人能帮忙吗?我做了一个我看不到的简单错误吗?
答案 0 :(得分:0)
如上所述,
将源设置为null,重新引用列表,然后重置绑定
ItemOnOrderDataGrid.DataSource = null;
ItemOnOrderDataGrid.DataSource = orderitemlist;
ItemOnOrderDataGrid.ResetBindings();
您可能想尝试省略null。我不记得这是否适用于没有null。