2009-06-17 6 views
0

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?

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 &nbsp; 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 &nbsp;

Vous devrez peut-être comparer la valeur à System.DBNull.Value en plus de string.IsNullOrEmpty si elle provient d'une base de données.

+0

J'ai essayé votre suggestion pour accrocher l'événement ItemDataBound de mon répéteur. Mes s sont encore vides même lorsque je remplace string.Empty/null avec nbsp ;. Comment/où connecter cette fonction? – Joel

+0

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