使用匹配的文本框和列值过滤表

Posted

技术标签:

【中文标题】使用匹配的文本框和列值过滤表【英文标题】:Filter table using matching textBox and column values 【发布时间】:2021-05-31 10:44:52 【问题描述】:

WPF 表单说明:

我想使用文本框中的 id 值过滤数据网格(在初始化时使用 sql 语句选择)以匹配图像中列中的 id(有点类似于使用内部连接)。我需要这方面的帮助。

      NpgsqlCommand cmd = new NpgsqlCommand("select * from central.equipment 
      where equipment.deleted = 1 ", con);
         
        NpgsqlDataAdapter da = new NpgsqlDataAdapter();
        da.SelectCommand = cmd;
       
        DataTable dt = new DataTable();
        da.Fill(dt);

        dataGridView1.Columns[0].Name = "emp_id";
        dataGridView1.Columns[0].HeaderText = "Employee ID";
        dataGridView1.Columns[0].DataPropertyName = "emp_id";

【问题讨论】:

也向我们展示您的代码, int id = 3; (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = $"emp_id = id" 【参考方案1】:

你可以使用 Linq:

例如:

//Code behind
Equipment selecteValueCodeBehind = (Equipment)dtgEquipment.SelectedItem;

using (var db = new DataContext())

   var QueryObjects = db.Equipment.Where(x=> x.EmployeeId == selecteValueCodeBehind.EmployeeId).ToList();
   dtEquipment.ItemsSource = QueryObjects;


//MVVM
public Equipment selecteValueMvvm get; set;  = new Equipment();
public List<Equipment> Equipments get; set; = new List<Equipment>();

using (var db = new DataContext())

   var QueryObjects = db.Equipment.Where(x=> x.EmployeeId == selecteValueMvvm.EmployeeId).ToList();
   Equipments  = QueryObjects;

顺便说一句,我认为您的应用程序是在 WinForms 中而不是 WPF 中。

【讨论】:

我解决了这个问题。我在选项卡单击事件上调用了 SQL,一切正常。 Datagridview 使用文本框整数输入正确过滤掉了行。 ——

以上是关于使用匹配的文本框和列值过滤表的主要内容,如果未能解决你的问题,请参考以下文章

Excel,根据从整个工作表中找到的文本返回行和列值

使用asp.net中的文本框进行Gridview过滤

如何根据文本框值过滤列表框值

MySQL常用命令(四)-REGEXP

匹配表格列宽的文本框

对齐文本框和标签文本