[英]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.