簡體   English   中英

在C#中將列動態添加到Gridview-if語句過多

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM