Как обновить DataGridView после операции * Обновить * с помощью WinForms? - PullRequest
0 голосов
/ 04 августа 2020

Я разрабатываю систему инвентаризации с использованием WindowsForms, и я использую Entity Framework для управления содержимым моей базы данных в Winforms. Моя проблема очень проста, и ее можно найти в большинстве вопросов о переполнении стека, но они не совпадают с моими (я думаю, потому что они не работали). Я использую MDI .

Ну, у меня есть datagridview, показывающий данные в дочерней форме 1 :

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        CargarLista();

    }

    public virtual void CargarLista()
    {

        var productos = _inventarioRepository.GetList();
        BindingSource source = new BindingSource();
        source.DataSource = productos;
        ListaProductos.DataSource = source;

    }

 public void Actualziar()
    {
        BindingSource source = new BindingSource();
        var productos = _inventarioRepository.GetList();
        source.DataSource = _context.Productos.Local.ToBindingList();
        source.ResetBindings(false);
        ListaProductos.DataSource = typeof(List<>);
        ListaProductos.DataSource = source;
    }

Все работает нормально, и у меня есть операция INSERT, когда эта операция успешно вставляется в базу данных, я refre sh my DataGridView следующим образом: (дочерняя форма 2)

private void button1_Click(object sender, EventArgs e)
{
   // my inserting code
   _context.Productos.Add(model);
   _context.SaveChanges();
   // _inventory is an instace to call child form 1 methods
   _inventory.Actualizar(); 
}

Операция INSERT отлично работает, потому что после нажатия кнопки DatagridView обновляется успешно.

Моя проблема в том, что когда я выполняю операцию изменения / обновления, DatagridView не работает и не обновляется сам: (дочерняя форма 3)

 private void UpdateButton_Click(object sender, EventArgs e)
{
   // my updating code
   _context.Entry(model).State = EntityState.Modified;
   _context.SaveChanges();
   // _inventory is an instace to call child form 1 methods
   _inventory.Actualizar(); 
}

Операция изменения работает нормально в базе данных, но не обновляется в DataGridView. Единственное решение для обновления DataGridView - закрыть и снова запустить программу и снова загрузить данные.

В заключение: datagridview при операции вставки обновляется нормально, но при внесении изменений - нет. Как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...