2017-10-07 94 views
0

我有一個帶有模板字段的gridview。 gridview中的最後一行是可以是正數或string.empty(= null)的總計行。這個想法如下:當總計行= null時,我怎麼能隱藏gridview的一列? 效果應該是隻有具有值的列可見。因爲每次這是一個動態過程,輸入(即一年)可能不同。 一個模板領域的例子:GridView:如何隱藏模板字段列動態

 <asp:TemplateField HeaderText="" ItemStyle-HorizontalAlign="Center"> 
     <HeaderTemplate> 
      <asp:LinkButton ID="H3" runat="server" ToolTip="Milano-Sanremo" CommandName="Sort" CommandArgument="Milaan-San Remo DESC" Text="MSR" /> 
     </HeaderTemplate> 
     <ItemTemplate> 
      <asp:Label ID="R3" runat="server" ToolTip="Milano-Sanremo" Text='<%# Eval("Milaan-San Remo") %>'></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 

我試圖隱藏列在代碼隱藏的方式:

 Dim TotalColumns As Integer 
    TotalColumns = GridView1.Rows(0).Cells.Count() 

    For i As Integer = 0 To TotalColumns - 1 
     If i > 4 Then 
      For Each row As TableRow In GridView1.Rows 
       If row.Cells(2).Text = "Nmbr of Riders" Then 
        Dim lid As String = DirectCast(row.FindControl("R3"), Label).Text 
        If lid = String.Empty Then 
         GridView1.Columns(i).Visible = True 
        Else 
         GridView1.Columns(i).Visible = False 
        End If 
       End If 
      Next 
     End If 
    Next 

文本「騎士NMBR」表示彙總行。 R3對應於上面的模板字段。該代碼位於GridView的DataBound事件中。 我嘗試了許多其他解決方案,但似乎沒有任何幫助。它看起來像asp.net沒有在表格單元格中看到任何值,但也許我錯了。 任何幫助將不勝感激!

回答

0

檢查GridView數據源。在DataBind()之後,隱藏該列。

GridView1.DataSource = dataSource; 
GridView1.DataBind(); 

// Hide last column 
GridView1.Colums[GridView1.Columns.Count - 1].Visible = dataSource.Any(c => c.Nbmr > 0); 

我不知道你的數據源結構。條件可以根據你的數據源而改變。