2016-11-21 3 views
0

Обычно я использую этот синтаксис для отображения символа единицы в метке: ej. 5'230 €дисплей блока подавления в метке

<asp:Label runat="server" Text='<%# Eval("TotalAmount","{0:#,###.##}&nbsp;€") %>' id="LabelTotal"/> 

Уродливая вещь о том, что символ отображается, даже если значение равно нулю или пусто. Тогда я хотел бы, чтобы символ просто был подавлен.

У кого-нибудь есть идея, как это сделать? Martin

+0

Почему вы не используете codebehind? –

+0

Я, вероятно, буду, если я не смогу решить это с помощью фрагмента. Этот ярлык используется в GridView, и событие OnRowDataBound уже заполнено кодом, так что я скорее сделаю это в разметке – Barnabeck

ответ

1

Вы можете использовать следующий фрагмент кода

<asp:Label runat="server" Text='<%# Convert.ToDecimal(Eval("TotalAmount")) > 0 ? string.Format("{0:C}", Convert.ToDecimal(Eval("TotalAmount"))) : string.Empty %>' id="LabelTotal"/> 

Если значение, которое должно быть оценено может содержать null значения, вы должны проверить IsNullOrEmpty первого до преобразования.

<asp:Label runat="server" Text='<%# !string.IsNullOrEmpty(Eval("TotalAmount").ToString()) ? Convert.ToDecimal(Eval("TotalAmount")) > 0 ? string.Format("{0:C}", Convert.ToDecimal(Eval("TotalAmount"))) : string.Empty : string.Empty %>' id="Label1"/> 
+0

Отлично, это работает отлично! Спасибо. – Barnabeck

+0

Но это не работает для отрицательных чисел. Я попробовал Convert.ToDecimal (Eval («LineAmount»))! = 0, но затем он бросает: Object нельзя отбрасывать из DBNull в другие типы. – Barnabeck

+0

Отрицательные значения да, NULL значения нет. Если эти значения также могут быть «null», тогда перед преобразованием в десятичную строку должна быть проверка «IsNullOrEmpty». См. Обновление – VDWWD

Смежные вопросы