Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 筛选视图中的行_C#_Database_Ms Access_Datagridview - Fatal编程技术网

C# 筛选视图中的行

C# 筛选视图中的行,c#,database,ms-access,datagridview,C#,Database,Ms Access,Datagridview,我是数据库和C的新手,但我想学习它。很抱歉,如果我没问任何问题,但我在任何地方都找不到答案。我在SQL数据库中找到了很多答案,但在access数据库中却找不到 我想制作一个简单的程序,与工人联系: 将有公司的名称,然后所有必要的信息联系该公司的经销商。 其想法是允许用户搜索公司,然后通过gridview中的按钮->打开我与该公司的所有联系人,如经销商电话、老板、传真、电子邮件等。 我已通过以下代码将数据加载到gridview: OleDbConnection connect = new OleD

我是数据库和C的新手,但我想学习它。很抱歉,如果我没问任何问题,但我在任何地方都找不到答案。我在SQL数据库中找到了很多答案,但在access数据库中却找不到

我想制作一个简单的程序,与工人联系:

将有公司的名称,然后所有必要的信息联系该公司的经销商。 其想法是允许用户搜索公司,然后通过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();
但是我在过滤记录方面遇到了很大的问题。。这个数据库应该有百分之几百的记录和更多的联系人,所以我想从手上过滤它不是个好主意。我还想通过在文本框中输入来过滤数据

示例:我开始键入:B它显示每个名字中有B的公司名称,然后O它显示有BO+E BOE+i BOEI+N BOEIN和+G的公司。。。它应该在没有按钮搜索的情况下实时过滤

正如我所说,我为SQL数据用户找到了许多答案,但对于access数据用户却没有任何答案。。因为我必须在这些数据中创建学校项目,所以我最好保持访问权限

我希望我对自己的需要足够清楚,希望有人知道如何帮助我


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

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

试试这个:

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

在textbox的textChange事件中执行上述操作将忽略使用按钮过滤结果

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

因此,使用适用于我的oledb和access数据库进行过滤: 注意:我只是刚刚开始,所以可能有更好的方法来做,不管怎样它的工作

`


你好欢迎如果您在c和SQL server上看到了很多示例,那么请将其中一个用于access数据库。两者将完全相同,只是将所有SqlConnection、SqlCommand、SqlReader替换为OleDbConnection、OleDbCommand和OleDbReader
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;
        }`