簡體   English   中英

按列名稱顯示/隱藏網格視圖列

[英]show/hide grid-view column by column name

我正在使用C#在Visual Studio 2012中創建一個Web項目,該項目將從數據庫中獲取數據並顯示在網格視圖中。 數據庫中有許多列,它們按原樣顯示在網格視圖上。 我想為用戶提供一個選項,以使用復選框消除不需要的列,並在選中后單擊按鈕必須對其進行更新。

我發現了如何通過列名隱藏列。 我需要找出如何與列名一起顯示它。

if (CheckBox3.Checked)
{
    dt.Columns.Remove("Site_name");
    GridView1.DataSource = dt;
    GridView1.DataBind();
}
else
{
    dt.Columns.Show("Site_name"); //I want a code to display, using column name.
}

好吧,我發現了一種非常簡單的方法,即通過單擊按鈕時使用復選框來顯示和隱藏特定列。

 if (CheckBox3.Checked == false)
 {
    dt.Columns.Remove("Site_name");
    GridView1.DataSource = dt;
    GridView1.DataBind();
 }

我不會從DataTable刪除整個列,然后,如果用戶希望顯示它(無法從數據庫或其他任何東西重新定義),則無法將其取回。 我只顯示/隱藏該列。

您必須先找到該列的索引。 DataControlFieldCollection.IndexOf僅支持通過DataControlField而不是其HeaderText查找索引。 如果您經常需要按名稱查找GridView -column的索引,則可以使用以下擴展方法:

public static class Extensions
{
    public static int GetColumnIndex(this DataControlFieldCollection columns, string columnName, StringComparison comparison = StringComparison.CurrentCultureIgnoreCase)
    {
        for(int index = 0; index <  columns.Count; index++)
            if(columns[index].HeaderText.Equals(columnName, comparison))
                return index;
        return -1;
    }
}

現在您可以使用以下代碼:

int colIndex = GridView1.Columns.IndexOf("Site_name");
GridView1.Columns[colIndex].Visible = isColumnVisible; // acc. to your logic

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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