[英]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.