筛选视图中的行

本文关键字:视图 筛选 | 更新日期: 2023-09-27 18:05:49

我是新的数据库和c#,但我想学习它。所以对不起,如果我问没有问题,但我找不到答案任何地方我已经尝试过(我发现很多答案与SQL数据库,但不与访问数据库)

我想做一个简单的程序与工人联系:

  • 将有公司名称,然后是与该公司经销商联系的所有必要信息。
  • 这个想法是允许用户搜索公司,然后通过gridview中的按钮->打开我与该公司的所有联系人,如经销商,老板,传真,电子邮件等)

我已经通过以下代码将数据加载到gridview:

OleDbConnection connect = new OleDbConnection();
connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:'Users'User'Documents'Programy'Baza Danych Kontakty'Dane.accdb";
connect.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connect;
command.CommandText = "SELECT * FROM Firma";
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    dataGridView1.Rows.Add();
    dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[0].Value = reader[2].ToString();
    dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1].Value = reader[0].ToString();
}
connect.Close();

但是我在过滤记录方面有很大的问题。这个数据库应该有百分之几的记录和更多的联系人,所以我想从手过滤它不是一个好主意。我还想通过输入textbox来过滤数据。

示例:我开始输入:B(它显示了她的名字中包含B的所有公司名称)然后O(它显示了包含BO的公司名称)+ E (BOE) + i (BOEI) +N(波音)和+G…它应该实时过滤(没有"搜索"按钮)。

就像我说的,我为SQL数据用户找到了很多答案,但没有为访问数据用户找到任何答案。我最好保持访问权限,因为我必须在这些数据中做学校项目。

我希望我对我的需求足够清楚,并希望有人知道如何帮助我。

非常感谢,很抱歉我的英语不好

筛选视图中的行

可以在绑定后过滤网格的数据,而不管它是从哪个数据源绑定的。

试试这个:

DataView dv = ((DataTable)dataGridView1.DataSource).DefaultView;
dv.RowFilter = "FromColumn like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = dv;
dataGridView1.DataBind();

在文本框的textChange事件中执行上述操作将省略使用按钮来过滤结果!

由此代码解决。Manish Mishra提出了一个好主意:)

所以过滤使用oledb和访问数据库,这对我的工作:(注意:我刚刚开始,所以可能有两种方法来做,无论如何它工作)

DataView dv = new DataView();
        public Form1()
        {
            InitializeComponent();
        }
    private void Form1_Load(object sender, EventArgs e)
    {
        DataTable datatable = new DataTable();
        OleDbConnection connect = new OleDbConnection();
        connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:'Users'User'Documents'Programy'Baza Danych Kontakty'Dane.accdb";
        connect.Open();
        OleDbCommand command = new OleDbCommand();
        command.Connection = connect;
        command.CommandText = "SELECT FirmaKod,FirmaNazwa FROM Firma";

        OleDbDataReader reader = command.ExecuteReader();
        datatable.Load(reader);
        dataGridView1.DataSource = dv = datatable.DefaultView;
        connect.Close();
    }
    private void textBox1_TextChanged(object sender, EventArgs e)
        {
            dv.RowFilter = "FirmaNazwa like '%" + textBox1.Text + "%'";
            if (textBox1.Text == "") dv.RowFilter = string.Empty;
        }`