Отображение $0,00 для значения DBNull с DataFormatString

Я использую DataFormatString для преобразования связанного поля цены в формат валюты, используя DataFormatString="{0:c}" для просмотра сведений.

Однако кажется, что если значение пустое или пустое из базы данных, вместо того, чтобы просто отображать пустое в моем представлении сведений, DataFormatString заставляет его отображаться как $ 0,00. Я попытался установить NullDisplayText="" но, похоже, это не сработало.

Любые идеи, как это сделать? Нужно ли вместо этого использовать ItemTemplate?

Вот как я получаю данные в .aspx

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:TestString %>" 
    SelectCommand="SELECT [Price] FROM [DataBase] WHERE ([ID] = @ID)">

Это код, который связывает данные:

 <asp:BoundField DataField="Price" HeaderText="Price:" SortExpression="Price" 
            DataFormatString="{0:c}" NullDisplayText="" />

person Kevin    schedule 14.04.2013    source источник
comment
Как вы получаете данные? Нельзя ли использовать хранимую процедуру, которая вернет 0, если значение пустое или нулевое?   -  person Oded    schedule 14.04.2013
comment
Обновлен мой вопрос, показывающий, где я получаю данные   -  person Kevin    schedule 14.04.2013
comment
Похоже, может помочь лучший запрос (взгляните на CASE) .   -  person Oded    schedule 14.04.2013
comment
Не могли бы вы добавить код asp, где вы привязываете полученное значение?   -  person nmat    schedule 15.04.2013
comment
Обновил вопрос с кодом asp   -  person Kevin    schedule 16.04.2013


Ответы (1)


Что-то вроде этого в отделенном коде — рассмотрите возможность поиска и использования события Databind для вашей сетки данных, чтобы упростить это:

If (value is DBNull) return "" else return FormattedValue(value)

Это может быть не совсем то, что вам нужно, но это именно то, что вам нужно; вам просто нужно использовать событие ItemDataBound вашего DataGrid, чтобы использовать это. Возвращайте ненулевое значение, как хотите; Я использовал FormattedValue для ясности.

person Richard Barker    schedule 25.09.2015