【问题标题】:Filter datagridview using combobox and textbox使用组合框和文本框过滤 datagridview
【发布时间】:2017-12-11 09:59:43
【问题描述】:

我试图通过从组合框项中搜索文本框中的关键字来过滤我的数据网格视图,其中源是我表中的列名。我不知道如何在 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

【问题讨论】:

    标签: c# datagridview combobox


    【解决方案1】:

    您并不总是需要使用性能不佳的 SQL,也许您可​​以在 form_load 事件上填充数据表并在 textchange() 事件上设置 rowfilter。

    按照以下有关 textchange 事件的代码,将您的 SQL 功能移至 form_load 事件

    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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多