1

我是数据库和 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(BOEIN)和+G .. . 它应该实时过滤(没有按钮“搜索”)。

就像我说的那样,我为 SQL 数据用户找到了很多答案,但对于访问数据用户来说,任何答案都没有。而且我必须保持访问权限,因为我必须在这些数据中进行学校项目。

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

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

4

2 回答 2

0

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

尝试这个:

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

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

于 2013-03-26T10:17:27.387 回答
0

通过此代码解决。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;
        }`
于 2013-03-27T08:16:55.160 回答