简体   繁体   English

使用组合框和文本框过滤数据网格视图

[英]Filter datagridview using combobox and textbox

I am trying to filter my datagridview by searching a keyword in a textbox from its combobox item where the source is the column name from my table.我试图通过在文本框中从其组合框项中搜索关键字来过滤我的 datagridview,其中源是我表中的列名。 I don't have any idea how to do it in c#.我不知道如何在 c# 中做到这一点。

All I know is this vb.net code:我只知道这个 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

在此处输入图片说明

You don't always need to go for SQL which will lack in performance, possibly you can fill datatable on form_load event and set rowfilter on textchange() event.您并不总是需要使用性能不足的 SQL,可能您可以在 form_load 事件上填充数据表并在 textchange() 事件上设置 rowfilter。

Follow the below piece of code on textchange event and move your SQL functionalities to form_load event按照下面关于 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();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM