Использование .Форматирование чистой строки, как мне отформатировать строку, чтобы отобразить пробел (empty string) вместо нуля (0)?
-
21-09-2019 - |
Вопрос
Я использую 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") ) %>
и внутри функции создайте желаемое форматирование