Voici ma situation. J'ai un répéteur lié à une liste, ce qui rend les lignes de la table. J'utilise <% # DataBinder.Eval (Container.DataItem, "SomeStringProperty")%> pour afficher mes données. Le problème est que lorsque SomeStringProperty est null, string.Empty ou "" (certains espaces), la bordure de mon TD n'est pas rendue. C'est comme si c'était vide et plutôt moche. Je ne suis pas sûr de savoir comment gérer cela. Googling n'a pas cédé les ans. Peut-être que quelqu'un ici peut me le dire. Merci ..Comment traiter avec null ou string.Empty quand ASP.NET Repeater rend Binder.Eval Table TDs?
0
A
Répondre
3
Je remplacer l'appel à DataBinder.Eval avec un contrôle Literal et gérer l'événement ItemDataBound du répéteur (OnItemDataBound). Dans le gestionnaire, vérifiez si l'élément est nul et renvoyez un espace insécable
si c'est le cas.
Vous pouvez également envelopper le Eval dans un appel de méthode pour le même effet:
<%# CheckNull(Eval("SomeStringProperty")) %>
dans le code sous-jacent:
protected string CheckNull(object value)
{
return string.IsNullOrEmpty(value) ? "SEE BELOW" : value.ToString();
}
Je ne peux pas obtenir ce afficher correctement - VOIR CI-DESSOUS doit être remplacé par
Vous devrez peut-être comparer la valeur à System.DBNull.Value en plus de string.IsNullOrEmpty si elle provient d'une base de données.
J'ai essayé votre suggestion pour accrocher l'événement ItemDataBound de mon répéteur. Mes
Trouvé. Vous devez accrocher le ItemCreated du répéteur. Voici ce que je dois travailler. AdjustmentRepeater_ItemCreated vide protégé (expéditeur d'objet, RepeaterItemEventArgs e) {if (e.Item.ItemType == == ListItemType.AlternatingItem || e.Item.ItemType ListItemType.Item) {var adj = (AdjustLineItem) e .Item.DataItem; adj.ParticipantSSN = CheckNull (adj.ParticipantSSN) .ToString(); adj.ParticipantName = CheckNull (adj.ParticipantName) .ToString(); } } – Joel
Questions connexes