J'ai une vue de grille avec des champs de modèle. La dernière ligne de la grille est une ligne de totaux qui peut être positive ou string.empty (= null). L'idée est la suivante: comment puis-je cacher une colonne de la grille lorsque la ligne de totaux = null? L'effet devrait être que seules les colonnes avec des valeurs sont visibles. Parce que l'entrée (c'est-à-dire une année) peut être différente chaque fois que c'est un processus dynamique. Un exemple d'un champ de modèle:GridView: comment masquer une colonne de champ de modèle dynamique
<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>
Et la façon dont j'ai essayé de cacher la colonne codebehind:
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
Le texte « NMBR Riders » indique la ligne des totaux. R3 correspond au champ de modèle ci-dessus. Le code est dans l'événement DataBound du Gridview. J'ai essayé beaucoup d'autres solutions mais rien ne semble aider. Il semble que asp.net ne voit aucune valeur dans les cellules du tableau, mais peut-être que je me trompe. Toute aide serait grandement appréciée!