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;