2013-03-26 60 views
1

我是数据库和C#的新手,但我想了解它。所以对不起,如果我问noby的问题,但我找不到答案,我试过任何地方(我发现很多答案与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数据用户的许多答案,但任何访问数据用户..更好的是我留在访问,因为我必须使这个数据的学校项目。

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

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

+0

你好。欢迎!。如果你在c#和SQL服务器上看到很多例子,那么将其中一个用于你的访问数据库。两者将完全相同,只需用OleDbConnection,OleDbCommand,OleDbReader替换所有的SqlConnection,SqlCommand,SqlReader – 2013-03-26 10:04:02

回答

0

通过此代码解决。马尼什·米什拉了好主意:)

所以使用OLEDB和访问数据库,工作对我来说过滤: (注:我只是开头,所以有可能是bether办法做到这一点,反正它的工作原理)

`

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; 
     }` 
0

您可以在绑定网格后过滤网格的数据,而不管绑定它的数据源如何。

试试这个:

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

做类似上面的文本框的textChange事件东西会省略使用按钮来过滤结果!