2009-06-17 1 views
0

Hier ist meine Situation. Ich habe einen Repeater an eine Liste gebunden, die Tabellenzeilen rendert. Ich verwende <% # DataBinder.Eval (Container.DataItem, "SomeStringProperty")%>, um meine Daten anzuzeigen. Das Problem besteht darin, dass der Rahmen für meinen TD nicht gerendert wird, wenn SomeStringProperty null, string.Empty oder "" (einige Leerzeichen) ist. Es ist wie leer und ziemlich hässlich. Ich bin mir nicht sicher, wie ich damit umgehen soll. Das Googeln hat nicht das Ergebnis erbracht. Vielleicht kann mir hier jemand sagen. Danke ..Wie gehe ich mit null oder string.Empty um, wenn ASP.NET Repeater Binder.Eval Table TDs rendert?

Antwort

3

Ich würde den Aufruf von DataBinder.Eval mit einem Literal-Steuerelement ersetzen und das ItemDataBound-Ereignis des Repeaters (OnItemDataBound) behandeln. Überprüfen Sie im Handler, ob das Element null ist, und geben Sie ein fehlerfreies Leerzeichen &nbsp; zurück, wenn dies der Fall ist.

Sie könnten auch die Eval in einem Methodenaufruf für den gleichen Effekt wickeln:

<%# CheckNull(Eval("SomeStringProperty")) %> 

im Code hinter:

protected string CheckNull(object value) 
{ 
    return string.IsNullOrEmpty(value) ? "SEE BELOW" : value.ToString(); 
} 

Ich kann dies nicht korrekt angezeigt bekommen - SEE BELOW sollte durch &nbsp;

ersetzt werden

Möglicherweise müssen Sie den Wert zu System.DBNull.Value zusätzlich zu string.IsNullOrEmpty vergleichen, wenn es aus einer Datenbank stammt.

+0

Ich habe Ihren Vorschlag versucht, das ItemDataBound-Ereignis meines Repeaters anzuhängen. Meine s sind immer noch leer, auch wenn ich string.Empty/null durch nbsp; ersetze. Wie/wo sollte diese Funktion aktiviert werden? – Joel

+0

Es gefunden. Sie müssen den Repeater ItemCreated einhaken. Hier ist, was ich zu arbeiten habe. protected void AdjustmentRepeater_ItemCreated (object sender, 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

Verwandte Themen