[英]Dynamically add columns to a gridview in C# - Too many if statements
我正在清理一些代码,并且正在使用的是在C#的代码隐藏中创建的gridview。 创建的边界域具有可见属性,该属性稍后将确定是否将其添加到gridView将包含的列的集合中。
构建gridView时,它引用一个表示默认列集合的属性,但是在该属性内,每个边界域的visible属性都使用if语句进行评估,如果可见,则将其添加到集合中。 代码如下:
private GridView.BaseFieldCollection _defaultColumns;
private GridView.BaseFieldCollection DefaultColumns
{
get
{
if (Col1.Visible)
{
_defaultColumns.Add(Col1);
}
if (Col2.Visible)
{
_defaultColumns.Add(Col2);
}
if (Col3.Visible)
{
_defaultColumns.Add(Col3);
}
if (Col4.Visible)
{
_defaultColumns.Add(Col4);
}
if (Col5.Visible)
{
_defaultColumns.Add(Col5);
}
}
}
问题是要评估的字段大约有30个,如果语句不适合我,则有30个左右。 我希望可以对此有一个更优雅的解决方案。 尽管我想到了将所有列添加到某种收集对象(列表,数组等)中,然后循环遍历,但似乎这样做的效率可能较低。
关于如何更优雅地执行此类操作的任何想法? 我难过...
谢谢
但似乎这样做的效率可能较低
在此代码成为瓶颈之前,这是无关紧要的。 例如,进行一些数据库访问,而这部分代码将永远不会成为瓶颈。
var cols = new[] {Col1,Col2,Col3}; // etc
foreach(var col in cols)
{
if(col.IsVisible)
_defaultColumns.Add(col);
}
也许:
var cols = new[] {Col1,Col2,Col3}; // etc
_defaultColumns.AddRange(cols.Where(c => c.IsVisible));
您可以使用转换器显示(或不显示)具有可见性属性的绑定列
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.