2014-02-25 43 views
1

我正在使用gridview綁定我的數據。我想隱藏後端列據此向headerfield如何根據標題字段在gridview中隱藏一列?

<asp:TemplateField> 
     <HeaderTemplate> 
      Incident Number 
     </HeaderTemplate> 
     <ItemTemplate> 
      <asp:Label ID="lb_incidentnumber" runat="server" Text='<%# Eval("IncidentNumber")%>'></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 

我可以簡單地寫爲gv_viewincident.Columns[3].Visible = false;,但我想提headername沒有給指數隱藏的列..

怎麼辦那?

+2

也許這個鏈接可以幫助您,這找到數據字段的GridView列。 [如何獲得列名的單元格值] [1] [1]:http://stackoverflow.com/questions/9715983/how-to-get-the-cell-value-by -column-name-not-by-index-in-gridview-in-asp-net –

+0

@minamorsali提供的鏈接非常棒。我建議將函數轉換爲[擴展方法](http://msdn.microsoft.com/en-us/library/bb383977.aspx),以使其更易於使用。 – mason

回答

1

這一個

for (int i = 0; i < gv_viewincident.Columns.Count; i++) 
{ 
if (gv_viewincident.Columns[i].HeaderText == "Incident Number") 
{ 
gv_viewincident.Columns[i].Visible = false; 
} 
} 
1

首先,讓我們做一個extension method,使其更容易獲得到列。將這個類放在名爲GridViewExtensions.cs的文件的App_Code文件夾中。

public static class GridViewExtensions 
{ 
    public static DataControlField GetColumnByHeaderText(this DataControlFieldCollection dataControlFieldCollection , string headerText) 
    { 
     foreach(var column in DataControlFieldCollection) 
     { 
      if(column.HeaderText==headerText) 
       return column; 
     } 
    } 
} 

然後它只是......

gv_viewincident.Columns.GetColumnByHeaderText("Incident Number").Visible=false; 

當然,這個假設你添加標題文本到列。

<asp:TemplateField HeaderText="Incident Number"> 
0

這裏有一個應該工作:

List<DataControlField> columns = grid.Columns.Cast<DataControlField>().ToList(); 

columns.Find(col => col.HeaderText == "Incident Number").Visible = false; 
相關問題