簡體   English   中英

在C#中編輯后,DataGridView不刷新

[英]DataGridView Does not refresh after editing in c#

我有一個數據網格視圖,該數據網格視圖在加載以下功能后為其數據源分配了一個項目列表:

public void refreshGrid(object sender, FormClosingEventArgs e)
{
    dgvItems.SuspendLayout();
    itemBindingSource.SuspendBinding();
    List<Item> items = db.Items.ToList();  // db is MyContext db = new MyContext();
    itemBindingSource.DataSource = items;
    dgvItems.DataSource = null;
    dgvItems.DataSource = itemBindingSource;
    itemBindingSource.ResumeBinding();
    dgvItems.ResumeLayout();
}

private void AllItemsForm_Load(object sender, EventArgs e)
{
   refreshGrid();
}

並有一個編輯按鈕,單擊該按鈕將執行以下操作:

private void btnEditItem_Click(object sender, EventArgs e)
{
    Item item = (Item)dgvItems.SelectedRows[0].DataBoundItem;
    var editForm = new EditItemForm(item);
    editForm.FormClosing += new FormClosingEventHandler(refreshGrid);
    editForm.Show();
}

即打開一個編輯表單,並為其refreshGrid()事件分配refreshGrid()

在該“編輯表單”上,我有一個“ Save按鈕,可以執行以下操作:

    private void btnSave_Click(object sender, EventArgs e)
    {
        Item itemEdited = db.Items.Where(i => i.itemId == itemEditing.itemId).Single();
        itemEdited.categoryId = (int)cbxCategory.SelectedValue;
        itemEdited.description = tbxDescription.Text;
        itemEdited.price = (Double)nudPrice.Value;
        db.Entry(itemEdited).State = EntityState.Modified;
        db.SaveChanges();
        this.Close();
    }

項目編輯有效,但僅在關閉並重新打開編輯表單refreshGrid() ,即分配給其關閉事件的refreshGrid()方法不起作用!

我怎樣才能解決這個問題?

我發現了自己的錯誤。 錯誤是使用了Context類的兩個不同實例。

解決方案是添加:

SomsaContext database = new SomsaContext();  // i.e. new instance of Context class

在刷新發生之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM