1

我需要遍历从数据库返回的自定义对象类型的属性,并且只显示包含数据的列。这意味着我不能简单地将对象列表绑定到数据网格。我不想遍历每个对象并查看该列是否为空/null 并确定在 UI 中显示它。我在想的是在我的业务层中,在我发回对象之前,我会发回一个 IEnumerable,其中只有那些应该可见的列。因此,我正在考虑使用 Linq to Object 来执行此操作,但我不确定这是否会非常漂亮。

有谁知道我可以在没有大量 IF 语句的情况下使用的解决方案,我可以通过一个大对象(大约 30 列)来检查以确定应该显示的内容。

Foreach (CustomerData customerdata in Customers) 
{ 
    if (!customerdata.address.Equals("")) 
       {
            dgvCustomerData.Column["Address"].visible = false;
         }
        //Continue checking other data columns...
}

我希望在 UI 和所有 IF 中避免所有这些......

谢谢

4

2 回答 2

4

您可以执行以下操作来简化它

Action<T,string> del = (value,name) => {
  if ( value.Equals("") ) {
    dgvCustomerData.Column[name].Visible = false;
  }
};
foreach ( var data in Customers ) {
  del(data.address,"Address");
  del(data.name, "Name");
  ...
}
于 2009-12-10T18:19:50.083 回答
2

看看.NET 反射库。您可以使用反射来获取对象的所有属性,并遍历它们以确定它们是否为空。然后您可以返回 KeyValuePair 对象的集合,其中 Key = 属性名称,Value = true/false。然后,您将使用键值对设置列可见性...

于 2009-12-10T18:20:02.180 回答