asp.net: есть ли способ напечатать ничего, когда значение равно 0, используя формат eval и валюты? - PullRequest
2 голосов
/ 04 апреля 2011

Я привязываю значение валюты внутри повторителя с помощью:

<asp:TextBox runat="server" ID="amount" Text='<%#Eval("amount","{0:c}")%>' />

Это работает, но выводит $ 0,00, если сумма равна 0. Если я использую формат вроде "{0: #. ##} "тогда ничего не распечатывается, когда значение равно 0.

Есть ли способ изменить формат" c ", чтобы указать, что ничего не должно быть напечатано для значений 0?

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Вы можете добавить метод базовой страницы, который возвращает строку и привязать к ней вместо этого, например:

/// <summary>
/// Formats a decimal number to the specified format in the settings
/// </summary>
/// <param name="d">Decimal</param>
/// <returns>string representation of the decimal</returns>
protected string FormatDecimal( decimal d )
{
    try
    {
        if ( d == decimal.Zero )
        {
            return string.Empty;
        }
        else
        {
            return d.ToString(Settings.Instance.DecimalFormat);
        }
    }
    catch ( Exception )
    {
        throw;
    }
}

затем в aspx:

   <asp:Label ID="Label5" runat="server" Text='<%# FormatDecimal((decimal)Eval("amount")) %>'></asp:Label>
1 голос
/ 04 апреля 2011
<asp:TextBox runat="server" ID="amount" Text='<%# Eval("amount","{0:c}").Equals("$0.00") ? "" : Eval("amount","{0:c}")) %>' />
...