Использование .Форматирование чистой строки, как мне отформатировать строку, чтобы отобразить пробел (empty string) вместо нуля (0)?

StackOverflow https://stackoverflow.com/questions/2282573

Вопрос

Я использую DataBinder.Выражение Eval в ASP.NET Datagrid, но я думаю, что этот вопрос применим к форматированию строк в .NET в целом.Клиент запросил, что если значение строки равно 0, то оно не должно отображаться.У меня есть следующий хак для достижения этой цели:

<%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "", 
    DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}"))  %>

Я хотел бы изменить {0:N0} форматирование выражения, чтобы я мог исключить оператор IIf, но не могу найти ничего, что работает.

Это было полезно?

Решение

Вам нужно использовать разделитель секций, вот так:

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>

Обратите внимание, что только отрицательный раздел может быть пустым, поэтому мне нужно поставить пробел в 0 Раздел.(Прочитайте Документация)

Другие советы

Учитывая принятый ответ:

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>

Пробел a помещается в 3-ю позицию, однако размещение # в третьей позиции отпадет необходимость звонить Trim().

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>

Используйте пользовательский метод.

public static string MyFormat(double value) {       
    return value == 0 ? "" : value.ToString("0");
}

<%# MyFormat(Convert.ToDouble(Eval("MSDWhole"))) %>

Попробуйте вызвать функцию во время привязки следующим образом

<%# MyFunction( DataBinder.Eval(Container.DataItem, "MSDWhole") ) %>

и внутри функции создайте желаемое форматирование

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top