使用文本框过滤绑定到acces数据库的列表框

时间:2015-10-22 12:21:56

标签: c# listbox

我在c#中很新,上课,但是我正在努力做的事情,我知道我已经提前了。 我有一个带有列表框和文本框的表单。 这就是我填充列表框的方式

private void Centrale_Gegevens_Load(object sender, EventArgs e)
    try
    {
        OleDbConnection verbinding = new OleDbConnection();
        verbinding.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:\Het Vlaamse Kruis\Het Vlaamse Kruis\data\Patienten.accdb; Jet OLEDB:Database Password=internet;";
        verbinding.Open();
        OleDbCommand combo = new OleDbCommand();
        combo.Connection = verbinding;
        string query = "select NaamPatient from tbl_Patient";
        combo.CommandText = query;
        OleDbDataReader reader = combo.ExecuteReader();
        while (reader.Read())
        {
            lstBox.Items.Add(reader["NaamPatient"]);
        }
        verbinding.Close();

    }
    catch (Exception ex)
    {
        MessageBox.Show("Error" + ex);
    }
}

列表框以这种方式填充了人名。 名为textbox1的文本框是我想用来过滤列表框的文本框。

这是我得到的软化,但它不起作用。

private void textBox1_TextChanged(object sender, EventArgs e)
{
    OleDbConnection verbinding = new OleDbConnection();
    verbinding.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:\Het Vlaamse Kruis\Het Vlaamse Kruis\data\Patienten.accdb; Jet OLEDB:Database Password=internet;";
    verbinding.Open();
    OleDbCommand cmd = new OleDbCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "select * from tbl_Patienten where NaamPatient like '" + textBox1.Text + "%' ";
    cmd.ExecuteNonQuery();
    DataTable dt = new DataTable();
    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    da.Fill(dt);
    lstBox.DataSource = dt;
    lstBox.DisplayMember = "NaamPatient";
    verbinding.Close();
}

我几乎可以在网上找到关于它的所有东西,公共汽车没有我做什么,我无法让它工作。 如果我在文本框中输入A,列表框显示所有以A开头的名称,如果我输入AB,列表框显示以AB开头的所有内容,我该怎么办? 提前致谢

1 个答案:

答案 0 :(得分:0)

首先,在Centrale_Gegevens_Load中,表的名称是tbl_Patient,但在textBox1_TextChanged中,它是tbl_Patienten。 其次,Connection属性尚未初始化。  您必须在初始化cmd后插入此cmd.Connection = verbinding;;

 OleDbCommand cmd = new OleDbCommand();
cmd.Connection = verbinding;

抱歉我的英语不好。