This is a migrated thread and some comments may be shown as answers.

Currency formatting with empty value

12 Answers 705 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Lenny_shp
Top achievements
Rank 2
Lenny_shp asked on 31 Aug 2010, 11:30 PM
2010.2.809.35   VS2008 / IE8

In the grid if I use this for GridBoundColumn it displays fine, but if my value is blank, I would like the cell to display balnk value instead of a single $ sign.    Help?

DataFormatString="${0:$###,###.##}"

12 Answers, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 01 Sep 2010, 05:56 AM
Hello Lenny,


Try the following DataFormatString and see whether it helps.
 
      DataFormatString="{0:$#.#;$(#.#);''}"


-Shinu.
0
Lenny_shp
Top achievements
Rank 2
answered on 01 Sep 2010, 02:18 PM
I don't get the $ prefix when a value exists with your format string.

Basically that $ inside the format doesn't get used...

"${0:$###,###.##}" = "${0:###,###.##}"

For now I got rid of the use of DataFormatString and used FormatCurrency function in the backend to create the exact string to display in grid.
0
Radoslav
Telerik team
answered on 06 Sep 2010, 10:18 AM
Hello Lenny_shp,

Could you please try using the following dataformatstring and let me know if the issue still persists:
<telerik:GridBoundColumn DataField="Money" DataFormatString="{0:C}" HeaderText="Money"> </telerik:GridBoundColumn>

Regards,
Radoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Lenny_shp
Top achievements
Rank 2
answered on 07 Sep 2010, 04:28 PM
DataFormatString="{0:C}" doesn't display a $ prefix.
0
Radoslav
Telerik team
answered on 10 Sep 2010, 11:13 AM
Hi Lenny_shp,

You could try setting the Page.Culture property to en-US this will force the $ sing to be showed. I am sending you a simple example which demonstrates this approach.
Also you could achieve the desired functionality with writing the following code snippet:
void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
   if (e.Item is GridDataItem)
   {
      GridDataItem item = e.Item as GridDataItem;
      if (item["ColumnUniqueName"].Text == "$")
      {
          item["ColumnUniqueName "].Text = "";
      }
   }
}

I hope this helps.

All the best,
Radoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Lenny_shp
Top achievements
Rank 2
answered on 10 Sep 2010, 02:30 PM
I tested with Culture="en-US" but it didn't show $.
My grid's data source is XML from NeedDataSource.  

        Dim ds As DataSet = New DataSet
        Dim xmlSR As System.IO.StringReader = Nothing
        Dim xmlDocWriter As New XmlDocument
        Dim xmlWriterObj As XmlWriter = xmlDocWriter.CreateNavigator().AppendChild
....
 xmlWriterObj.WriteAttributeString("Units", myObject.Units)
.....
            ds.ReadXml(xmlSR)
            RadGrid1.DataSource = ds

                        <telerik:GridBoundColumn HeaderText="Units" UniqueName="Units" DataField="Units" ReadOnly="true" DataFormatString="{0:C}">
                            <HeaderStyle HorizontalAlign="Right" />
                            <ItemStyle HorizontalAlign="Right" />
                        </telerik:GridBoundColumn>   
0
Radoslav
Telerik team
answered on 15 Sep 2010, 09:35 AM
Hi Lenny_shp,

When you bind the RadGrid to a xml file, all data from it has String as a type. So when you set the DataFormatString="{0:C}" to the column it could not format the value, because the value is not a Double. To achieve the desired functionality you need to parse the string values to the appropriate type into RadGrid.ItemDataBound:
Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound
       If TypeOf e.Item Is GridDataItem Then
           Dim item As GridDataItem = TryCast(e.Item, GridDataItem)
           Dim value As Double
           If [Double].TryParse(item("money").Text, value) Then
               item("money").Text = value.ToString("C")
           End If
       End If
   End Sub

Additionally I am sending you a simple example which demonstrates the desired functionality.
I hope this helps.

Sincerely yours,
Radoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Asutosh
Top achievements
Rank 1
answered on 20 Jun 2014, 06:04 AM
hi
i am using radgrid view
in that there is one currency column
i use  DataFormatString="{0:C}" to format that its works fine for positive value but for negative its give round bracket
ex: if value is -10 then out put show ($10)
i want -$10 in rad grid if input is -10
help me
0
Princy
Top achievements
Rank 2
answered on 20 Jun 2014, 10:23 AM
Hi Asutosh,

You can try the following code snippet to have the currency format for negative numbers.

C#:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
  if (e.Item is GridDataItem)
 {
   GridDataItem dataItem = (GridDataItem)e.Item;
   System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");    
   culture.NumberFormat.CurrencyNegativePattern = 1;     
   double value =Convert.ToDouble( dataItem["ColumnUniqueName"].Text);      
   dataItem["ColumnUniqueName"].Text = value.ToString("C", culture);
 }
}

Thanks,
Princy
0
Asutosh
Top achievements
Rank 1
answered on 21 Jun 2014, 08:48 AM
thanks for your reply
bt in this i ddnt get any value in dataItem
so it give me error
my code is as below
  protected void grd_firstchart_aco_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            GridDataItem dataItem = (GridDataItem)e.Item;
            System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
            culture.NumberFormat.CurrencyNegativePattern = 1;
            double value = Convert.ToDouble(dataItem["AvgSavings"].Text);
            dataItem["AvgSavings"].Text = value.ToString("C", culture);
        }
    }
0
Princy
Top achievements
Rank 2
answered on 21 Jun 2014, 09:07 AM
Hi Asutosh,

Im not clear about your issue, can you provide your ASPX code snippet as well. With below code I was able to get it working, check the attached screenshot.

ASPX:
<telerik:GridBoundColumn DataField="Freight" HeaderText="Freight" UniqueName="Freight" />

C#:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
  if (e.Item is GridDataItem)
   {
    GridDataItem dataItem = (GridDataItem)e.Item;
    System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US");
    culture.NumberFormat.CurrencyNegativePattern = 1;
    double value = Convert.ToDouble(dataItem["Freight"].Text);
    dataItem["Freight"].Text = value.ToString("C", culture);
   }
}

Thanks,
Princy
0
Asutosh
Top achievements
Rank 1
answered on 22 Jul 2014, 06:36 AM
hi princy 
i am using radhtml chart 
i have tool tip also in radhtml chart
now in tool tip i have currency data 
when it comes in negative it will show round bracket out side 
ex : data = -500  
       output = ($500)
i want out put -$500
i am using below code to tool tip formating
 #= kendo.format(\\\'{0:C\\\',dataItem." + displaydata)#";




Tags
Grid
Asked by
Lenny_shp
Top achievements
Rank 2
Answers by
Shinu
Top achievements
Rank 2
Lenny_shp
Top achievements
Rank 2
Radoslav
Telerik team
Asutosh
Top achievements
Rank 1
Princy
Top achievements
Rank 2
Share this question
or