System.Windows.Controls.TextBlock header on RadGridView

4 posts, 0 answers
  1. Dave
    Dave avatar
    39 posts
    Member since:
    Jun 2008

    Posted 11 May 2015 Link to this post

    I hesitate to count how many RadGridViews I have between the app currently being used in an Enterprise situation and the new app we're working hard on. But today I've been working an issue I have NEVER seen before.

    I have two grids on a particular page that are *almost* identical. Both have some columns that the header is simply a piece of text written in the GridViewDataColumn "Header" property. Likewise both have some columns that we want the text to wrap, so I'm using a GridViewDataColumn.Header section with a TextBlock with wrapping properties. None of the header text is bound, it is simple text either as Header= or in a .Header section.

    Today I noticed one of the grids is displaying "System.Windows.Controls.TextBlock" instead of the Header. And it doesn't matter if it is a Header section or simply a Header parameter.. not all fail but the ones that are failing are from both types of Header display.

    To add insult to injury, I commented one out that wasn't working correctly (one with the wrapping setup), and copied the one above in the xaml and only changed the binding value and UniqueName... left the simple Header= property the same... and it STILL displays as "System.Windows.Controls.TextBlock".

    If I had just initiated this grid, I'd say I had something wrong, but this has been working for quite a while, and all of a sudden it's not displaying simple header text.

    I've compared all the Telerik references, and ensured they are the correct (consistent and latest) version.

    Has anyone seen this before? What the heck is it doing?

    And no... this is a grid on a usercontrol stuck inside a 44 project app, and the chance of me pulling it out into something small enough to send and have it still not work probably isn't worth the effort of trying...

    -Dave

  2. Dimitrina
    Admin
    Dimitrina avatar
    3769 posts

    Posted 14 May 2015 Link to this post

    Hi Dave,

    I am sorry to hear you experience such an issue, it would be indeed strange that it only started occurring on one RadGridView. 

    Generally, we are neither aware of such an issue, nor we had it reported before. RadGridView's Header is an object and you could directly assign any object for it. Would you please share how have you defined it exactly? What is the value of the property you are displaying as a Header? Is it eventually a TextBlock itself? Are you able to isolate the issue in a demo project and send it to us? You can open a new support ticket and attach the sample there.

    Regards,
    Dimitrina
    Telerik
    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 Feedback Portal and vote to affect the priority of the items
  3. Bruno
    Bruno avatar
    5 posts
    Member since:
    Sep 2014

    Posted 07 Jul Link to this post

    Hello,

    I just had the same issue and I'll post the solution here for future reference.

    The cause of the issue is the Persistence Framework. If you are filling the Header property directly in one grid and using a TextBlock in the header of another grid, the issue occurs. The Persistence Framework needs to know how to retrieve the header text and it converts the TextBlock to a string, resulting in "System.Windows.Controls.TextBlock".

    The solution is to retrieve the header text differently for the different cases. This needs to be done in both the ProvideValue and RestoreValue methods of the ICustomPropertyProvider.

    string headerText;
    var headerTextBlock = column.Header as System.Windows.Controls.TextBlock;
    if (headerTextBlock != null)
    {
        headerText = headerTextBlock.Text;
    }
    else
    {
        headerText = column.Header.ToString();
    }
     
    columnProxies.Add(new ColumnProxy()
    {
        UniqueName = column.UniqueName,
        Header = headerText,
        DisplayOrder = column.DisplayIndex,
        Width = column.Width,
    });
  4. Stefan X1
    Admin
    Stefan X1 avatar
    735 posts

    Posted 12 Jul Link to this post

    Hello Bruno,

    Thank you very much for sharing your solution with the community.

    I have updated your Telerik points as a token of gratitude for this.

    All the best,
    Stefan X1
    Progress Telerik
    Try our brand new, jQuery-free Angular 2 components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
Back to Top