从另一个窗体筛选数据网格视图

本文关键字:数据网 网格 视图 数据 筛选 另一个 窗体 | 更新日期: 2023-09-27 18:31:13

所以我正在用Windows窗体制作项目,需要一点帮助。

在我的第一份表格中,我将数据从本地sql数据库导入DataGridView,这是关于客户资金转移的。

现在我需要为我的 DataGridView 创建一个过滤器,例如显示传输超过 1500$ 的所有客户端数据。

此类查询可以有多个参数。

所以我在按钮上调用另一个表单单击以输入所有过滤器参数。

在按钮单击上输入参数后,我需要过滤第一种形式的 DGV 中的数据。但是我不知道如何从另一个表单更改DGV。我试图通过这种方式调用form1:

Form form1 = new Form();

但我仍然无法访问DataGridView。

我怎样才能做到这一点?

从另一个窗体筛选数据网格视图

这不会引用原始表单,而是创建一个表单:

Form form1 = new Form();

因此,您对该变量执行的任何操作都会发生在第二个内存中不可见的形式上。

大概,在你的主窗体上的某个地方,你正在做这样的事情,以便用过滤器逻辑显示你的第二个窗体,对吗?

Form2 form2 = new Form2();
form2.Show();

您可以做的是通过该构造函数传递对当前窗体的引用,以便Form2将引用回主窗体。 因此,在 Form2 构造函数中,您可以执行以下操作:

private Form1 parentForm;
public Form2(Form1 form1)
{
    this.parentForm = form1;
}

因此,在Form2代码中的其他任何位置,都可以引用该父窗体:

this.parentForm.SomeMethodCall();

然后,Form1当您显示Form2实例时,它可以传递对自身的引用:

Form2 form2 = new Form2(this);
form2.Show();

此时Form2现在可以引用 Form1 公开的任何公共功能。 公共属性、公共方法等 所以无论Form1上需要发生什么逻辑,只需公开一个方法来执行此操作并从Form2调用该方法即可。

从具有按钮单击事件的初始窗体中,您可以像这样调用第二个筛选窗体:

using ( Form  form2 =  new Form())
{
    if(form2.ShowDialog() == DialogResult.OK) 
    {
         //apply data filtering based on what you got from form2
    }
}