无法获取datagridview来刷新数据

时间:2014-08-07 15:10:16

标签: c# winforms datagridview

我有以下按钮点击事件:

private void button_GetTrucks_Click(object sender, EventArgs e)
{
  if (textBox_CompanyCode.Text.Length != 3)
  {
    _errorProvider.SetError(button_GetTrucks, "Invalid company code.");
    return;
  }
  textBox_CompanyCode.Enabled = false;
  button_GetTrucks.Enabled = false;

  _corporationId = GetCorporationId(textBox_CompanyCode.Text);
  if(_corporationId == Guid.Empty)
  {
    _errorProvider.SetError(button_GetTrucks, "Could not find company.");
    return;      
  }

  dataGridView1.DataSource = null;
  _soureItemCollection = null;

  textBox_CorporationId.Text = _corporationId.ToString();
  var query = GetTrucks(_corporationId);
  _soureItemCollection = new ObservableCollection<Truck>(query);
  dataGridView1.DataSource = _soureItemCollection;
  MakeDataGridViewPerty();

  button_GetTrucks.Enabled = true;
  textBox_CompanyCode.Enabled = true;      
}

public static List<Truck> GetTrucks(Guid corporationId)
{
  return (from trk in Entity.Trucks
    where trk.CorporationId == corporationId
    orderby trk.TruckNumber
    select trk).ToList();
}

当我通过点击按钮获得数据时,它工作正常。如果数据已更改,由于另一个程序更改数据,我再次单击此按钮刷新数据,它保持不变并且不显示更改的数据。

如果我重新启动应用程序,请单击该按钮,新数据将正确显示。

因此,我需要重新启动应用程序才能重新加载数据。

为什么按钮点击没有重新加载数据?

2 个答案:

答案 0 :(得分:2)

我已经看到你必须在数据绑定中添加它才能重新绑定

dataGridView1.DataSource = _soureItemCollection;
dataGridView1.Databind();

答案 1 :(得分:0)

在此电话会议之前:var query = GetTrucks(_corporationId);先放置此电话:

Entity.Refresh(RefreshMode.OverwriteCurrentValues,Entity.Trucks);