Reputation: 1114
I am using a DataBinder.Eval expression in an ASP.NET Datagrid, but I think this question applies to String formatting in .NET in general. The customer has requested that if the value of a string is 0, it should not be displayed. I have the following hack to accomplish this:
<%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "",
DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}")) %>
I would like to change the {0:N0}
formatting expression so that I can eliminate the IIf statement, but can't find anything that works.
Upvotes: 6
Views: 4875
Reputation: 19687
Given the accepted answer:
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>
The a space is placed in the the 3rd position, however placing a #
in the third position will eliminate the need to call Trim()
.
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>
Upvotes: 3
Reputation: 887405
You need to use the section separator, like this:
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>
Note that only the negative section can be empty, so I need to put a space in the 0
section. (Read the documentation)
Upvotes: 10
Reputation: 4349
Try to call a function while binding like this
<%# MyFunction( DataBinder.Eval(Container.DataItem, "MSDWhole") ) %>
and inside the function make the formatting you want
Upvotes: 0
Reputation: 74909
Use a custom method.
public static string MyFormat(double value) {
return value == 0 ? "" : value.ToString("0");
}
<%# MyFormat(Convert.ToDouble(Eval("MSDWhole"))) %>
Upvotes: 0