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事件東西會省略使用按鈕來過濾結果!