Use of CellFormatting event

6 posts, 0 answers
  1. pierre-jean
    pierre-jean avatar
    86 posts
    Member since:
    Apr 2011

    Posted 22 Oct Link to this post

    Hello

    I wonder if I make the correct use of the CellFormatting Event:

    I have a grid that contains only one line

    In the CellFormatting event I modify the cell text as following:

            If cell.ColumnInfo.Name = "licence_type_id" Then
                Dim LicenceType As wsWSTLicence.licence_type = wsLicenceTypes.Find(Function(x) x.id.Equals(cell.Value))
                cell.Text = LicenceType.Code & " (" & LicenceType.Description & ")"
                cell.TextAlignment = ContentAlignment.MiddleCenter
            End If

    It works fine, however I realized that the code within the If Statement is called 6 times (which is the number of columns in my grid ..)
    Is this normal ?
    I would think that if my processing was heavy this would negatively impact the performance.

     

    Also what is the difference between then CellFormatting Event and the ViewCellFormatting Event

     

    Thanks in advance

    Pierre-Jean

  2. LT
    LT avatar
    9 posts
    Member since:
    Oct 2018

    Posted 23 Oct Link to this post

    Hi

    Per this article here :

    Formatting non-data cells
    The ViewCellFormatting event is fired for all cells. So if you want to format the grouping row or the header cells, you should use this event.

    As for the CellFormatting being called multiple times, I have experienced the same thing. It is being called for each column in your row. You probably have 6 columns. The CellFormatting event is being called for each row[column]/cell in that row.

  3. Nadya
    Admin
    Nadya avatar
    109 posts

    Posted 24 Oct Link to this post

    Hello,

    Thank you for writing!

    In order to achieve some visual customization the appropriate way is to make use of the CellFormatting/ViewCellFormatting events in RadGridView. Note that RadGridView uses UI virtualization which means that cell elements are created only for currently visible cells and are being reused during operations like scrolling, filtering, grouping and so on. Hence, the formatting event is fired every time the cell needs to be refreshed when interacting with the mouse/keyboard. Have in mind that it is absolutely normal that the more visual cell elements you have, the more number of calls the CellFormatting event will have. The event ensures that the proper style will be applied to the cells.

    However, using this event should not lead to performance issues if you use it for its purpose only. For reference, I prepared a test project with 6 columns with 10 000 rows and set the TextAllignment property to MiddleCenter for all the cells in the grid. As it seems there is no slow performance issue. Could you please specify how many rows/columns you are expecting to have in your grid? How many visible cell elements you have on the form?

    The main difference between these two events is that the CellFormatting event is fired for all data cells only while the ViewCellFormatting is fired for all non-data cells like header cells, grouping row cells, search row cells.

    I hope this information is useful. Let me know if you need further assistance.

    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.
  4. pierre-jean
    pierre-jean avatar
    86 posts
    Member since:
    Apr 2011

    Posted 25 Oct in reply to Nadya Link to this post

    Hello and thanks for your replies

    I understand that using the CellFormatting Event is the right thing to do to modify the cell text property,

    However I am still puzzled by the number of calls to the CelleEvent Event.
    I have taken your sample code and
    1. changed the loop to have only one line in the grid:
                    for (int i = 0; i < 1; i++)

    2. I have added a debug.print statement in the cell formatting event:
                Debug.Print (e.CellElement.ColumnInfo.Name + "-" + e.CellElement.Value  );
    Here below  the content of the debug window :

    Is this normal ? and can you explain ?
    Thanks a lot

    ---------------------------------------------------------------------------------

    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-
    Name-
    Electric car-
    Electric car-
    Make-
    Make-
    Model-
    Model-
    PartID-
    PartID-
    Year-
    Year-
    Name-Name 0
    Name-Name 0
    Electric car-YES
    Electric car-YES
    Make-Tesla
    Make-Tesla
    Model-X5
    Model-X5
    PartID-0
    PartID-0
    Year-2000
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    Name-Name 0
    Electric car-YES
    Make-Tesla
    Model-X5
    PartID-0
    Year-2000
    -------------------------------------------------------


     

  5. Nadya
    Admin
    Nadya avatar
    109 posts

    Posted 28 Oct Link to this post

    Hello Pierre-Jean,

    Yes, I confirm this behavior is normal. The CellFormatting event is expected to be fired a lot of times since it is responsible for the proper styling of the cell elements. If you use it for formatting purposes only it will not affect the performance. 

    Please do not hesitate to contact us if you have any other questions or concerns.

    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.
  6. pierre-jean
    pierre-jean avatar
    86 posts
    Member since:
    Apr 2011

    Posted 28 Oct in reply to Nadya Link to this post

    Hello and thank you for your reply and the explanation.

    Regards

    Pierre-Jean

Back to Top