我有一个带有模板字段的gridview。 gridview中的最后一行是一个总行,可以是正数或string.empty(= null)。这个想法如下:当总计row = null时,如何隐藏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 :(得分:0)
检查GridView数据源。在DataBind()之后,隐藏列。
GridView1.DataSource = dataSource;
GridView1.DataBind();
// Hide last column
GridView1.Colums[GridView1.Columns.Count - 1].Visible = dataSource.Any(c => c.Nbmr > 0);
我不知道您的数据源结构。条件可能会根据您的数据源而变化。