筛选视图中的行
本文关键字:视图 筛选 | 更新日期: 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;
}`