DataGridView动态更改DataSource [英] DataGridView Changing DataSource Dynamically
本文介绍了DataGridView动态更改DataSource的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
public void fillDataGrid(IQueryable< PatientInfo>患者){
dgvMyPatients.DataSource = patients;
dgvMyPatients.Columns [Pat_Last_Name]。DisplayIndex = 0;
dgvMyPatients.Columns [Pat_First_Name]。DisplayIndex = 1;
dgvMyPatients.Columns [Pat_Middle_Name]。DisplayIndex = 2;
dgvMyPatients.Columns [Pat_First_Name]。HeaderText =First Name;
dgvMyPatients.Columns [Pat_Last_Name]。HeaderText =Last Name;
dgvMyPatients.Columns [Pat_Middle_Name]。HeaderText =Middle Name;
}
public IQueryable< PatientInfo> showMyPatients(){
DbClassesDataContext myDb = new DbClassesDataContext(dbPath);
var patientInfo =来自myDb.PatientInfos
中的患者,其中patient.Phy_ID == physcianID
选择患者;
返回PatientInfo;
}
所以当我创建我的对象我只是这样做
fillDataGrid(showMyPatients());
但是当我点击一个按钮时,我想将其内容更改为这样的查询
private IQueryable< PatientInfo> searchPatient(){
DbClassesDataContext myDb = new DbClassesDataContext(dbPath);
var search = from myPatients in myDb.PatientInfos
其中(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;
返回搜索;
}
然后当我点击我的按钮它会这样做,但它不是更新datagrid为什么是这样的?
fillDataGrid(searchPatient());
解决方案
有同样的问题,经过一段时间的搜索,终于找到答案:
DataTable dt = new DataTable();
dt.Columns.Add(Column One);
dt.Rows.Add(new object [] {Item1});
dt.Rows.Add(new object [] {Item2});
dt.Rows.Add(new object [] {Item3.3});
this.dataGridView1.AutoGenerateColumns = true;
this.dataGridView1.Columns.Clear();
//dataGridView1.DataSource = null;
dataGridView1.DataSource = dt;
AutoGenerateColumns需要是真的,就是这样。
Basically when I create this DataGridView I have this code to fill it up
public void fillDataGrid(IQueryable<PatientInfo> patients) {
dgvMyPatients.DataSource = patients;
dgvMyPatients.Columns["Pat_Last_Name"].DisplayIndex = 0;
dgvMyPatients.Columns["Pat_First_Name"].DisplayIndex = 1;
dgvMyPatients.Columns["Pat_Middle_Name"].DisplayIndex = 2;
dgvMyPatients.Columns["Pat_First_Name"].HeaderText = "First Name";
dgvMyPatients.Columns["Pat_Last_Name"].HeaderText = "Last Name";
dgvMyPatients.Columns["Pat_Middle_Name"].HeaderText = "Middle Name";
}
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;
}
So when I create my Object I just do this
fillDataGrid(showMyPatients());
But When I click a button I want to change its contents to something like in this query
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;
}
Then when I click my button It will do this, but it is not updating the datagrid why is that? fillDataGrid(searchPatient());
解决方案
Have the same question, after searched a while, finally found the answer:
DataTable dt = new DataTable();
dt.Columns.Add("Column One");
dt.Rows.Add(new object[] { "Item1" });
dt.Rows.Add(new object[] { "Item2" });
dt.Rows.Add(new object[] { "Item3.3" });
this.dataGridView1.AutoGenerateColumns = true;
this.dataGridView1.Columns.Clear();
//dataGridView1.DataSource = null;
dataGridView1.DataSource = dt;
AutoGenerateColumns needs be true, that's it.
这篇关于DataGridView动态更改DataSource的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文