Mise En Forme DataBinder.Eval données
Comment puis-je formater les données en provenance d'un DataBinder.Eval déclaration dans une page ASPX?
Par exemple, je veux afficher la date de publication des articles de presse dans un format particulier dans la page d'accueil. Je suis à l'aide de la ASP.NET 2.0 contrôle Repeater pour afficher la liste des éléments d'actualité.
Le code pour que cela se passe comme ceci:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1">
<HeaderTemplate><table cellpadding="0" cellspacing="0" width="255"></HeaderTemplate>
<ItemTemplate>
<tr><td >
<a href='/content/latestNews.aspx?id=<%#DataBinder.Eval(Container.DataItem, "id") %>'>
<asp:Label ID="lblNewsTitle" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "title") %>'></asp:Label>
</a>
</td></tr>
<tr><td>
<asp:Label ID="lblNewsDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "publishedDate"))%>'></asp:Label>
</td></tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate></asp:Repeater>
Est-il un moyen que je pourrais appeler une méthode personnalisée avec le DataBinder.Eval valeur comme paramètre (quelque chose comme ci-dessous)?
<asp:Label ID="lblNewsDate" runat="server" Text='<%# GetDateInHomepageFormat(DataBinder.Eval(Container.DataItem, "publishedDate")) )%>'></asp:Label>
Si oui, où dois-je écrire le GetDateInHomepageFormat méthode? J'ai essayé dans le code-behind de la page, mais a eu une erreur d'exécution?
Si ce n'est pas possible, est-il un moyen de faire du formatage en ligne?
Vous devez vous connecter pour publier un commentaire.
Il y a une surcharge facultatif pour DataBinder.Eval pour l'approvisionnement de la mise en forme:
Le paramètre format est une Chaîne de valeur, à l'aide de la valeur de l'espace réservé de remplacement de la syntaxe (composite mise en forme) comme ceci:
Après quelques recherches sur Internet, j'ai trouvé que il est en effet très possible pour appeler une méthode personnalisée en passant la DataBinder.Eval valeur.
La méthode personnalisée peut être écrit dans le fichier code-behind, mais doit être déclaré public ou protégé. Dans ma question ci-dessus, j'avais mentionné que j'ai essayé d'écrire la méthode personnalisée dans le code derrière, mais a été d'obtenir une erreur d'exécution. La raison pour cela est que j'avais déclaré la méthode à privé.
Donc, en résumé, ce qui suit est une bonne façon d'utiliser DataBinder.Eval valeur pour obtenir votre sortie désirée:
par défaut.aspx
par défaut.aspx.cs code:
Espère que cela aide les autres.
Pourquoi ne pas utiliser la syntaxe plus simple?
C'est le modèle de contrôle "Eval" qu'il prend dans l'expression et la chaîne de format:
)
http://msdn.microsoft.com/en-us/library/3d2sz789.aspx
Vous pouvez utiliser une fonction dans un répéteur comme vous l'avez dit, mais notez que la DataBinder.Eval retourne un objet et vous devez le convertir en un DateTime.
Vous pouvez également formater votre domaine en ligne:
Si vous utilisez ASP.NET 2.0 ou plus récent, vous pouvez écrire ce que ci-dessous:
Une autre option est de lier la valeur de l'étiquette à OnItemDataBound événement.
Cette ligne a résolu mon problème:
Pour le format de la date en utilisant le format de date à utiliser:
Comment Formater un Eval Instruction pour Afficher une Date à l'aide de la Date de paramètres Régionaux
Merci à tous. J'avais été coincé sur le standard des chaînes de format pour un certain temps. J'ai aussi utilisé une fonction personnalisée dans VB.
Marquer:-
Code derrière:-
Texte='<%# DateTime.Parse(Eval("LastLoginDate").ToString()).ToString("MM/jj/aaaa hh:mm tt") %>'
Cela fonctionne pour le format que vous souhaitez
Vous pouvez l'utiliser de cette façon dans la page aspx