У меня есть вид сетки данных, данные которого источник получает назначен список элементов после следующей функции от нагрузки:DataGridView не обновляется после редактирования в 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()
его закрытия мероприятия.
На этой форме редактирования у меня есть эта 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()
метода, который был назначен его закрытие не работает!
Как это исправить?
Это не работает или его не называют? Какое неправильное поведение вы испытываете? Исключение? Неверные данные? –
@PaoloCosta, я думаю, что он не вызывается, потому что тот же метод работает для моего 'AddForm'. Или проблема связана с классом Conity EntityFramework. Может быть, он сохраняется после вызова метода refresh. Никаких исключений, неверных данных. Все работает нормально, за исключением того, что представление datagrid не обновляется, если оно не закрыто и не открыто – Jorj