DataGridView остается пустым после изменения источника данных во время выполнения

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

 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 ответа

Решение

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

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

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

dgvMyPatients.Columns.Clear();
dgvMyPatients.AutoGenerateColumns = true;
dgvMyPatients.DataSource = bs;
Другие вопросы по тегам