2017-04-17 14 views
1

私はdgvAllBikesという名前のgridViewコントロールを持っています。フォームのロード時には、dgvAllBikesをロードします。今私は3つのオプションと検索ボタンに基づいてdgvAllBikesであるこのgridViewをフィルタリングしたい。複数のオプションに基づいてDataGridViewをフィルタリングする方法は?

1)CC

2)モデル

3)カラー

私はこれらの3つのオプションに基づいてdgvAllBikesをフィルタリングする検索ボタンをクリックしてください。ここで

は、私がここでクラスレベルでのDataTable

string CS; 
    protected DataTable dtAllBike; 
    public SaleBike() 
    { 
     InitializeComponent(); 
     CS = ConfigurationManager.ConnectionStrings["BikeDB"].ConnectionString; 
    } 

を宣言している私のLoadGridコード

private DataTable LoadGrid() 
    { 

     using (SqlConnection con = new SqlConnection(CS)) 
     { 
      SqlCommand cmd = new SqlCommand("spGetAllBikes", con); 
      cmd.CommandType = CommandType.StoredProcedure; 
      con.Open(); 
      SqlDataReader r = cmd.ExecuteReader(); 
      dtAllBike = new DataTable(); 

      dtAllBike.Load(r); 

     } 
     return dtAllBike; 
    } 

です。ここ絵 enter image description here

がbtnSearchためのコードです。

private void btnSearch_Click(object sender, EventArgs e) 
    { 
     BindingSource bs = new BindingSource(); 
     bs.DataSource = dgvAllBikeDetails.DataSource; 
     bs.Filter = dgvAllBikeDetails.Columns["CC"].HeaderText.ToString() + " LIKE '%" + tbCCSearch.Text + "%'"; 
     dgvAllBikeDetails.DataSource = bs; 

これはCCに基づいてフィルタリングしますが、他の2つのオプションをバインドすることはできません。あなたの助けは本当に感謝されます。

答えて

4

複数の値に作用するフィルタを作成するには、ORまたはAND演算子を使用します。

private void btnSearch_Click(object sender, EventArgs e) 
{ 
    BindingSource bs = new BindingSource(); 
    bs.DataSource = dgvAllBikeDetails.DataSource; 

    string filter = ""; 

    // Check if text fields are not null before adding to filter. 
    if (!string.IsNullOrEmpty(tbCCSearch.Text)) 
    { 
     filter += dgvAllBikeDetails.Columns["CC"].HeaderText.ToString() + " LIKE '%" + tbCCSearch.Text + "%' "; 
    } 
    if (!string.IsNullOrEmpty(tbModelSearch.Text)) 
    { 
     if (filter.length > 0) filter += "OR "; 
     filter += dgvAllBikeDetails.Columns["Model"].HeaderText.ToString() + " LIKE '%" + tbModelSearch.Text + "%' "; 
    } 
    if (!string.IsNullOrEmpty(tbCCSearch.Text)) 
    { 
     if (filter.length > 0) filter += "OR "; 
     filter += dgvAllBikeDetails.Columns["Color"].HeaderText.ToString() + " LIKE '%" + tbColorSearch.Text + "%' "; 
    } 

    bs.Filter = filter; 
    dgvAllBikeDetails.DataSource = bs; 
} 
+0

最高です..愛しています..ありがとうございました –

+1

嬉しいです! =) –

関連する問題