DataGridView动态更改DataSource [英] DataGridView Changing DataSource Dynamically

查看:132
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆