【问题标题】:DataGridView is blank after Changing DataSource at Runtime在运行时更改数据源后 DataGridView 为空白
【发布时间】:2012-04-15 08:17:09
【问题描述】:

我有一个表单,它在创建时会进行此查询

 public IQueryable<PatientInfo> showMyPatients() 
 {    
        DbClassesDataContext myDb = new DbClassesDataContext(dbPath);
        var patientInfo = from patients in myDb.PatientInfos
                          where patients.Phy_ID == physcianID
                          select patients;

        return patientInfo;
  }

一旦我调用它,我会将它插入一个变量并在此处将其作为参数传递

public void fillDataGrid(IQueryable<PatientInfo> patients) 
{                
       dgvMyPatients.DataSource = patients;
}

听起来很简单吧?但是当我运行这个查询时

private IQueryable<PatientInfo> searchPatient() 
{    
      DbClassesDataContext myDb = new DbClassesDataContext(dbPath);
      var search = from myPatients in myDb.PatientInfos
                   where (myPatients.Pat_ID == patient_ID && myPatients.Pat_First_Name.Contains(txtSearch.Text)) ||
                         (myPatients.Pat_ID == patient_ID && myPatients.Pat_Last_Name.Contains(txtSearch.Text)) ||
                        (myPatients.Pat_ID == patient_ID && myPatients.Pat_Middle_Name.Contains(txtSearch.Text))
                         select myPatients;

       return search;
 }

并将其作为参数传递给fillDataGrid(),即使该查询有结果,DataGrid 也会有一个空白值

BindingSource bs = new BindingSource();
bs.DataSource = searchPatient();
dgvMyPatients.DataSource = bs;

注意:两个查询都返回 PATIENTINFO,我将插入同一个 DataGrid

【问题讨论】:

标签: c# .net winforms datagridview datasource


【解决方案1】:

尝试添加这些行

dgvMyPatients.Columns.Clear();
dgvMyPatients.AutoGenerateColumns = true;
dgvMyPatients.DataSource = bs;

【讨论】:

    【解决方案2】:

    我所做的是,替换我的连接字符串,然后在我的查询中进行更改,我的查询似乎有问题所以这就是它不起作用的原因。它没有产生任何结果。

    所以我所做的是,每次我调用这个事件并更改我使用的数据源dgvMyPatients.Columns.Clear(); and dgvMyPatients.Refresh();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      相关资源
      最近更新 更多