使用匹配的文本框和列值过滤表
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 使用文本框整数输入正确过滤掉了行。 ——以上是关于使用匹配的文本框和列值过滤表的主要内容,如果未能解决你的问题,请参考以下文章