2017-12-11 9 views
0

テキストボックスのキーワードをコンボボックスの項目から検索することで、データグリッドビューをフィルタリングしようとしています。ソースはテーブルの列名です。私はどのようにC#でそれを行うか分からない。コンボボックスとテキストボックスを使用したデータグリッドビューのフィルタ

私が知っているすべては、このvb.netコードです:

Private Sub txtkeyword_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtkeyword.TextChanged 

Dim qry As String 

If cmbfilter.Text = "EMPLOYEE_ID" Then 
      qry = "select * from tblpayslip where EMPLOYEE_ID like '%" & txtkeyword.Text & "%'" 

Else 
      qry = "select * from tblemployee" 

End If 

    connect() 
    conn.Open() 
    cmd = conn.CreateCommand 

    cmd.CommandText = qry 

    dr = cmd.ExecuteReader 

    If dr.HasRows Then 
     Dim dtpayslip As New DataTable 
     dtpayslip.Load(dr) 
     dgvpayslip.DataSource = dtpayslip 
    End If 

    dgvpayslip.Columns(0).HeaderCell.Value = "EMPLOYEE_ID" 
    dgvpayslip.Columns(1).HeaderCell.Value = "SALARY_PER_DAY" 
    dgvpayslip.Columns(2).HeaderCell.Value = "NO_OF_DAYS_WORKED" 
    dgvpayslip.Columns(3).HeaderCell.Value = "GROSS_PAY" 
    dgvpayslip.Columns(4).HeaderCell.Value = "SSS" 
    dgvpayslip.Columns(5).HeaderCell.Value = "PAG_IBIG" 
    dgvpayslip.Columns(6).HeaderCell.Value = "TAX" 
    dgvpayslip.Columns(7).HeaderCell.Value = "NET_PAY" 

    dgvpayslip.ClearSelection() 
End Sub 

enter image description here

答えて

0

あなたはいつも、おそらくあなたが埋めることができ、パフォーマンスに欠けますSQLのために行く必要はありません。 form_loadイベントでdatatable、textchange()イベントでrowfilterを設定します。

textchangeイベントにコードの下の部分に従うと

  if (!string.IsNullOrEmpty(comboBox1.Text)) 
      { 
       var dt = (DataTable)dgvpayslip.DataSource; 
       dt.DefaultView.RowFilter = string.Format("{0} like '%{1}%'",comboBox1.Text.Trim().Replace("'", "''"), txtkeyword.Text.Trim().Replace("'", "''")); 
       dgvpayslip.Refresh(); 
      } 
イベントをのForm_LoadためにあなたのSQLの機能を移動
関連する問題