c# - DataGridView 动态更改数据源

标签 c# .net dynamic datagridview

基本上,当我创建这个 DataGridView 时,我有这段代码来填充它

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;
        }

所以当我创建对象时我就这样做

fillDataGrid(showMyPatients());

但是当我单击按钮时,我想将其内容更改为类似于此查询的内容

 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(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 需要为 true,就是这样。

关于c# - DataGridView 动态更改数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9957931/

相关文章:

c# - 内部类的成员可以被覆盖吗?

c# - 为什么 IntelliSense 认为我字典中的值是动态的?

javascript - jQuery:动态更改所有 href 值

C# ServiceStack JsonSerializer 反序列化

c# - 当鼠标从列表框移开时,列表框上的多项选择不起作用

.net - 为什么我的 UDP 广播失败?

.net - 在 AspNet Core 中调试 ReactJS 组件

c# - 如何解析 C# 中的 MSI 路径?

c# - 我可以通过编译器选项传递 VisualStudio 版本名称吗?

c++ - 类可以在运行时在 C++ 中添加友元类吗?