关闭表格后c#Datagrid无法更新

时间:2019-02-26 09:27:35

标签: c# .net

这是我刷新Datagridview的方式。

顺序是,当我在datagrid视图中双击一个条目时,它将打开一个对话框。提交该表单后,该框将关闭,并调用RefreshDataGrid()。

现在的问题是,当我更新表单并关闭它时,数据网格刷新,但显示了旧条目。但是,如果我关闭该表单并重新打开,它会显示正确的更新。

最奇怪的是,当我向datagridview添加新条目时,它按照正常显示。

private void RefreshDataGrid()
{
    var selected = programInput.SelectedValue;
    if (selected != null)
    {
        var result = programsData.Get(selected.ToString());
        if (result != null)
        {
            programIdInput.Text = result.Id;
            LoadList(result.Id);
        }
    }
    if (selected == "-1")
    {
        RecursiveClearInputs(this.Controls);
        programIdInput.Text = "";
        fieldIdInput.Text = "";
        fieldsDataGridView.DataSource = null;
    }
    fieldsDataGridView.ClearSelection();
}

LoadList

private void LoadList(string Input)
{
    fieldsDataGridView.DataSource = null;
    var fields = fieldsData.GetAllByTaskId(Input);
    List<FieldsDGViewModel> fdgvm = new List<FieldsDGViewModel>();
    foreach (var item in fields)
    {
        var f = new FieldsDGViewModel
        {
            Id = item.Id,
            Name = item.Name,
            Order = item.Order,
            IsPrint = item.IsPrint
        };
        fdgvm.Add(f);
    }
    fdgvm = fdgvm.OrderBy(x => x.Order).ToList();
    fieldsDataGridView.DataSource = fdgvm;
    fieldsDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    fieldsDataGridView.Columns["Id"].Visible = false;
    fieldsDataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
}

这是更新功能。

public bool Update(Field Input)
{
    try
    {
        var f = Get(Input.Id);
        f.Name = Input.Name;
        f.IsPrint = Input.IsPrint;
        f.Order = Input.Order;
        dbContext.SaveChanges();
        return true;
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
        return false;
    }
}

0 个答案:

没有答案