Datagridview无法正确更新

时间:2018-01-30 10:41:54

标签: c# datagridview

我是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视图。有人能帮忙吗?我做了一个我看不到的简单错误吗?

1 个答案:

答案 0 :(得分:0)

如上所述,

将源设置为null,重新引用列表,然后重置绑定

        ItemOnOrderDataGrid.DataSource = null;
        ItemOnOrderDataGrid.DataSource = orderitemlist;
        ItemOnOrderDataGrid.ResetBindings();

您可能想尝试省略null。我不记得这是否适用于没有null。