这是我刷新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;
}
}