RadGridView_CellFormatting No Effect

4 posts, 0 answers
  1. Jean-Charles
    Jean-Charles avatar
    9 posts
    Member since:
    Jun 2018

    Posted 01 Jan Link to this post

    Hi,

    I've a problem with my CellFormating.
    More precisely with "FormatString" which does not work properly.

    I filled my RadGridView with the help of a list.
    Everything is working properly.
    Here is a bit of my implementation:

    Public Class Liste_DossiersVO
     
       '...
       Private dvo_prix_public As String
       '...
     
       Public Property Prix_Public() As String
           Get
               Return dvo_prix_public
           End Get
           Set(value As String)
               dvo_prix_public = value
           End Set
       End Property
     
       Public Sub New(...,
                      Prix_Public As String,
                      ...)
           Me.Prix_Public = Prix_Public
       End Sub
     
       Default Public ReadOnly Property Item(ByVal i As Integer) As Object
           Get
               Select Case i
                   ...
                   Case 6
                   ...
                   Case Else
                       Return [String].Empty
               End Select
           End Get
       End Property
        
    End Class
     
     
     
     
     
    Public Sub Binding_Liste_DossiersVO()
           Using db As New NpgsqlConnection
                   Dim sql As NpgsqlCommand = db.CreateCommand()
                   Try
                       db.ConnectionString = ParamSQL
                       db.Open()
     
                       If db.State = ConnectionState.Open Then
     
                           sql.Parameters.Clear()
                           sql.CommandType = CommandType.Text
     
                           sql.CommandText = "SELECT ...
                                         FROM "...;"
     
                           Dim reader As IDataReader = sql.ExecuteReader()
                           Data_GridView_VO.Clear()
                           While reader.Read()
     
                           Dim LVO As New Liste_DossiersVO(Convert.ToString(reader(0)),
                                                               Convert.ToString(reader(1)), 
                                                               Convert.ToString(reader(2)), 
                                                               Convert.ToString(reader(3)), 
                                                               Convert.ToString(reader(4)), 
                                                               Convert.ToString(reader(5)), 
                                                               Convert.ToString(reader(6)),  'dvo_prix_public --> Prix_Public
                                                               Convert.ToString(reader(7))) 
     
                           Data_RadGridView1.Add(LVO)
     
                           End While
                       End If
                   db.Close()
                   Catch ex As Exception
                       db.Close()
                       ErrorBox.RadTextBoxControl1.Text = ex.ToString
                       ErrorBox.Show()
                   End Try
           End Using
       End Sub
        
        
        
       Public Sub BindToRadGridView1()
           Home.GridView_VO.MasterTemplate.AllowAddNewRow = False
           Home.GridView_VO.MasterTemplate.AutoGenerateColumns = False
           Home.GridView_VO.DataSource = Nothing
           Home.GridView_VO.TableElement.BeginUpdate()
           Home.GridView_VO.MasterTemplate.Columns.Clear()
           '...
           Home.GridView_VO.MasterTemplate.Columns.Add(New GridViewDecimalColumn("PRIX PUBLIC", "Prix_Public"))
     
           For i As Integer = 0 To Home.GridView_VO.MasterTemplate.Columns.Count - 1
               Home.GridView_VO.MasterTemplate.Columns(i).Width = 150
           Next i
     
           Home.GridView_VO.TableElement.EndUpdate(False)
           Home.GridView_VO.DataSource = Data_GridView_VO
       End Sub

     

    Then when I try to format the display of my 6th column with my currency format it doesn't work.
    The rest works well.
    For example, a color change works without problems.
    Also, if I add € to "{0: C}" -> "{0: C} €" the currency sign looks good but the formatting is not the right one -> € 1,250.00
    The correct form should be € 1,250.00

    I tried several implementation attempts but never got the right result :

     

    Private Sub RadGridView1_CellFormatting(ByVal sender As Object, ByVal e As Telerik.WinControls.UI.CellFormattingEventArgs) Handles RadGridView1.CellFormatting
        If e.CellElement.ColumnInfo.Name = "PRIX PUBLIC" Then
            If e.CellElement.Text <> "" Then
                e.CellElement.Text = String.Format(New CultureInfo("fr-FR"), "{0:C}", e.CellElement.Value)
            End If
        End If
    End Sub

    Or simple

    Me.RadGridView1.Columns(6).FormatInfo = CultureInfo.CreateSpecificCulture("fr-FR")
    Me.RadGridView1.Columns(6).FormatString = "{0:C}"

     

    Doesn't work.

     

    Do you have any idea?

    A solution ?
    Thank you.

     

  2. Nadya
    Admin
    Nadya avatar
    380 posts

    Posted 02 Jan Link to this post

    Hello Jean-Charles,

    It seems that you have a column with numeric values in your RadGridView and you would like to show currency format. In this case, I can suggest you to use a GridViewDecimalColumn that allows decimal data to be displayed. You can set its FormatString property to a specified numeric type that satisfies your custom requirement. After some research in general programming forums, I found out that setting the FormatInfo property to "en-FR" will display the currency in € in front of the numeric value with a comma for thousands separator and a dot for the coins:
    https://stackoverflow.com/questions/47612295/how-to-display-the-euro-symbol-at-the-front-of-the-number-when-using-cultureinfo

    Please refer to the following code snippet which result is demonstrated below:

    GridViewDecimalColumn decimalCol = radGridView2.Columns["DecimalColumn"] as GridViewDecimalColumn;
    
    if (decimalCol != null)
    {
        decimalCol.FormatInfo = CultureInfo.CreateSpecificCulture("en-FR");
        decimalCol.FormatString = "{0:C}";
    }
    

    I hope this helps. Should you have any other questions do not hesitate to ask.

    Regards,
    Nadya
    Progress Telerik

    Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
  3. Jean-Charles
    Jean-Charles avatar
    9 posts
    Member since:
    Jun 2018

    Posted 02 Jan in reply to Nadya Link to this post

    Hello Nadya,

     

    I already use a GridViewDecimalColumn

    Public Sub BindToGridView_VO()
            Home.GridView_VO.MasterTemplate.AllowAddNewRow = False
            Home.GridView_VO.MasterTemplate.AutoGenerateColumns = False
            Home.GridView_VO.DataSource = Nothing
            Home.GridView_VO.TableElement.BeginUpdate()
            Home.GridView_VO.MasterTemplate.Columns.Clear()
            '...
            Home.GridView_VO.MasterTemplate.Columns.Add(New GridViewDecimalColumn("PRIX PUBLIC", "Prix_Public"))
     
            Home.GridView_VO.TableElement.EndUpdate(False)
            Home.GridView_VO.DataSource = Data_GridView_VO

     

    Your code has no effect, and neither does it:

    Private Sub GridView_VO_CellFormatting(ByVal sender As Object, ByVal e As Telerik.WinControls.UI.CellFormattingEventArgs) Handles GridView_VO.CellFormatting
            If e.CellElement.ColumnInfo.Name = "PRIX PUBLIC" Then
                If e.CellElement.Text <> "" Then
                    e.CellElement.Text = String.Format(New CultureInfo("fr-FR"), "{0:C}", e.CellElement.Value)
                End If
            End If  
    End Sub

     

     

     

     

     

     


  4. Nadya
    Admin
    Nadya avatar
    380 posts

    Posted 07 Jan Link to this post

    Hello Jean-Charles,

    According to the provided code snippet, I can not see whether you set the FormatInfo and FormatString properties to the decimal column. I have attached my test project to this thread as well. Could you please give it a try and let me know how it works for you? If you are experiencing further difficulties I would kindly ask you to modify the attached project and get it back to me so we can investigate the precise case.

    I am looking forward to your reply.

    Regards,
    Nadya
    Progress Telerik

    Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Back to Top