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