J'ai une page ASP.Net très simple qui fait office de frontal pour une procédure stockée. Il exécute simplement la procédure et affiche la sortie à l'aide d'un contrôle gridview: moins de 40 lignes de code total, y compris le balisage aspx. La procédure stockée elle-même est très ... volatile. Il est utilisé à plusieurs fins et le format de sortie change régulièrement.Colonnes de format pour ASP.Net GridView basé sur le type de données
Le tout fonctionne très bien, car le contrôle gridview n'a pas vraiment besoin de se soucier des colonnes que la procédure stockée retourne: il les affiche juste sur la page, ce qui est exactement ce que je veux.
Cependant, la base de données sur laquelle elle s'exécute comporte un certain nombre de colonnes datetime partout où la partie de temps n'est pas vraiment importante - elle est toujours mise à zéro. Ce que j'aimerais pouvoir faire, c'est contrôler le formatage des seules colonnes datetime dans la grille, sans jamais savoir exactement quelles colonnes elles seront. Chaque fois qu'une colonne dans les résultats a un type datetime, appliquez simplement une chaîne de format donnée qui va couper le composant time.
Je sais que je pourrais convertir en varchar à la base de données, mais je ne voudrais vraiment pas que les développeurs se soucient de la mise en forme dans la requête et cela appartient au niveau de la présentation. D'autres idées?
a finalement obtenu ce travail dans un acceptable (ou au moins amélioré) manière en utilisant ce code:
Protected Sub OnRowDatabound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim d As DateTime
For Each cell As TableCell In e.Row.Cells
If Date.TryParse(cell.Text, d) AndAlso d.TimeOfDay.Ticks = 0 Then
cell.Text = d.ToShortDateString()
End If
Next cell
End If
End Sub
Cela semble correcte: je Je vais attendre un peu plus longtemps avant d'afficher ou d'accepter pour que la question reste un peu plus longtemps sur l'onglet sans réponse, mais je reviendrai vers vous. –
Ok, j'ai joué avec ça maintenant. Bon effort, mais je ne peux pas trouver un moyen d'obtenir le type d'une colonne dans le contrôle au moment de l'exécution, et même si je ne pouvais pas trouver où placer une expression de format. –
Fait un montage d'une autre idée que je viens de composer :). GL. – Robert