DataGridView остается пустым после изменения источника данных во время выполнения - PullRequest
2 голосов
/ 01 апреля 2012

У меня есть форма, где, когда он был создан, он будет этот запрос

 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 ]

2 голосов
/ 05 апреля 2012

То, что я сделал, заменил строку подключения, затем изменил в моем запросе, похоже, проблема в моем запросе, поэтому он не работает.он не дает никакого результата.

Так что я делал, каждый раз, когда я вызываю это событие и меняю источник данных, который я использую dgvMyPatients.Columns.Clear(); and dgvMyPatients.Refresh();

1 голос
/ 01 апреля 2012

Попробуйте добавить эти строки

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