在运行时更改DataSource后,DataGridView为空

时间:2012-04-01 09:42:28

标签: c# .net winforms datagridview datasource

我有一个表单,当它创建时,它将是此查询

 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

2 个答案:

答案 0 :(得分:2)

我做的是,替换我的连接字符串,然后在我的查询中更改,我的Query soo似乎有问题,这就是为什么它不起作用。它没有产生任何结果。

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

答案 1 :(得分:1)

尝试添加这些行

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