[英]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.