为了账号安全,请及时绑定邮箱和手机立即绑定

根据单元格值过滤datagridview中的对象列表

根据单元格值过滤datagridview中的对象列表

C#
慕神8447489 2021-06-21 09:00:58
我目前不确定让过滤器在其数据源设置为对象列表的 datagridview 上正常工作的最佳方式。所以给定一个对象:    public class DepositAccountBill    {        #region Properties        public int AccountBillID { get; set; }        public int AccountID { get; set; }        public string AccountNumber { get; set; }        public string ControlNumber { get; set; }        public DateTime BillDate { get; set; }        public decimal DepositAmount { get; set; }}我有一个 datagridview 表,大致如下所示:Account Number  |  Control Number  | Bill Date  |   Deposit Amount ==================================================================123456          | AJA1234367       | 5/21/2018  | 12.99 123456          | PSA1234367       | 5/21/2018  | 5.77 567332          | HBA1234367       | 5/21/2018  | 1255.99 769843          | AJA1234367       | 5/21/2018  | 12.99 所以当点击一个单元格时。让我们说第一列上的第一个单元格。如果我右键单击一个单元格并在上下文菜单中选择一个选项,该选项表示过滤器,我需要仅显示具有相同帐号的行的 datagridview 表。在这种情况下,它将是第 1 行和第 2 行。为了让我这样做,我必须访问 datagridview 表中填充有 DepositAccountBill 的对象。所以我需要做的是查看并查看我正在查看的列具有所选单元格的值。所以在我的方法中,我迄今为止尝试过没有结果:var collection = (List<DepositAccountBill>)dataGridView1.DataSource;var filterList = collection.Where ( q => (collection.Select(r => GetPropValue(r, dataGridView1.Columns[clickedCell.ColumnIndex].DataPropertyName))) == (clickedCell.Value);dataGridView1.DataSource = filterList.ToList();public object GetPropValue(object obj, string propName){    return obj.GetType().GetProperty(propName).GetValue(obj, null);}我不知道 SELECT 是否是在这里使用的正确 LINQ 方法,或者这是否可能。我想使用 WHERE 因为它只抓取符合条件的对象列表。像这样的东西:var filterList = collection.Where(r => r.AccountNumber == clickedCell.Value); 唯一的问题是r.AccountNumber取决于所选列的数据属性。程序不知道基于所选单元格上的单击事件的数据属性是什么。这就是为什么我认为反思可能是必要的。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信