Hide nodes in FieldsControl

7 posts, 1 answers
  1. Eduard
    Eduard avatar
    7 posts
    Member since:
    Jul 2012

    Posted 15 Jan 2016 Link to this post

    Hello,

     I'm using a PivotGrid with nodes from a database. I want to hide some of the fields of the fieldControl and I use this code:

    Private Sub RadPivotFieldList1_NodeFormatting(ByVal sender As Object, ByVal e As TreeNodeFormattingEventArgs)
            If e.Node.Text = "IdAnalisis" Then
                e.Node.Visible = False
            End If

    The problem is that when it shows the dialog, the IdAnalisis node is still there and when I press the FieldsControl window, then it disappears. I tried to use refresh and invalidate in different parts of the code, but always the same problem. Any solution?

    Thank you,

    Eduard

  2. Hristo
    Admin
    Hristo avatar
    1522 posts

    Posted 18 Jan 2016 Link to this post

    Hi Eduard,

    Thank you for writing.

    The easiest solution would be to work with a LocalDataSourceFieldDescriptionsProvider and handle its AddingContainerNode event. Then you would be able to set the AutoGenerateField flag to false for selected fields.

    I am sending you attached a sample project which I believe should get you going.

    I hope this helps. Should you have further questions please do not hesitate to write back.

    Regards,
    Hristo Merdjanov
    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. Eduard
    Eduard avatar
    7 posts
    Member since:
    Jul 2012

    Posted 19 Jan 2016 in reply to Hristo Link to this post

    Hi Hristo,

    Thank you for your answer, but is not possible to do use the database directly (without using LocalDataSource)? Our database has a lot of columns and I will need extra work to use as LocalDataSource... I just use this:

    Me.V_ResultsTableAdapter.Fill(Me.V_Results._V_Results)
    RadPivotGrid1.DataSource = VResultsBindingSource

    Where V_Results is a view of SQL server.

    Thanks,

    Eduard

  4. Answer
    Hristo
    Admin
    Hristo avatar
    1522 posts

    Posted 19 Jan 2016 Link to this post

    Hello Eduard,

    Thank you for writing back.

    The RadPivotFieldList control internally contains a tree which can be accessed and from there selected nodes can be hidden. For you type of scenario, it is suitable to subscribe the pivot control to the UpdateComplete event and in the handler iterate the field list nodes and hide those nodes which you do not want to be visible:
    Private Sub RadPivotGrid1_UpdateCompleted(sender As Object, e As EventArgs)
        Dim dateNode As RadTreeNode = Me.RadPivotFieldList1.FieldsControl.Nodes.Where(Function(n) n.Text = "Date").FirstOrDefault()
        If dateNode IsNot Nothing Then
            Dim weekNode = dateNode.Nodes.Where(Function(n) n.Text = "Week").FirstOrDefault()
            If weekNode IsNot Nothing Then
                weekNode.Visible = False
            End If
     
        End If
    End Sub

    I hope this information is useful. Should you have further questions please do not hesitate to write back.

    Regards,
    Hristo Merdjanov
    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
  5. Eduard
    Eduard avatar
    7 posts
    Member since:
    Jul 2012

    Posted 19 Jan 2016 in reply to Hristo Link to this post

    Thank you Hristo,

     Now it works perfectly!

    Eduard

  6. Michael
    Michael avatar
    4 posts
    Member since:
    Aug 2018

    Posted 13 Oct 2020 Link to this post

    I realize this is coming years after the original post, but I'm trying to weed out some of the fields from my PivotFieldList and came across this thread.  I downloaded your example and it runs fine, but when I copy some of its code -- practically word-for-word -- into my application, it never hits the handler.  Here's what I have:

        Protected Overrides Sub OnLoad(e As EventArgs)
            MyBase.OnLoad(e)

            Dim dao = New InvoiceDaoImpl() With {.Session = session}
            Dim details = dao.LoadFromSql(makeQuery(), take)
            Me.provider = New LocalDataSourceProvider() With {.ItemsSource = details.ToList()}
            Dim descriptionProvider As LocalDataSourceFieldDescriptionsProvider = New LocalDataSourceFieldDescriptionsProvider()

            AddHandler descriptionProvider.AddingContainerNode, AddressOf descriptionProvider_AddingContainerNode

            Me.provider.FieldDescriptionsProvider = descriptionProvider
        End Sub

        Private Sub descriptionProvider_AddingContainerNode(sender As Object, e As ContainerNodeEventArgs)
            If e.ContainerNode.Name = "Promotion" Then
                Dim fin As FieldInfoNode = TryCast(e.ContainerNode, FieldInfoNode)
                TryCast(fin.FieldInfo, PropertyFieldInfo).AutoGenerateField = False
            End If
        End Sub

    The only difference is that rather than using your list of Orders as the data-source I'm using my list "details".  I've checked and the list has data, and of course it has many public properties.

    What can be causing this?  I see that your example program is using the Telerik Winforms packages installed on my system, whereas mine is using a recent NuGet version of your packages, but it seems unlikely that that would cause this.

  7. Dess | Tech Support Engineer, Sr.
    Admin
    Dess | Tech Support Engineer, Sr.  avatar
    4172 posts

    Posted 15 Oct 2020 Link to this post

    Hello, Michael,  

    I have tested the provided sample project by Hristo and it works as expected. The "Promotion" field is not displayed in the RadPivotFieldList

    Please have in mind that it is important to subscribe to the LocalDataSourceFieldDescriptionsProvider.AddingContainerNode event before the descriptions are added to the provider and before it is being set to the RadPivotGrid.PivotGridElement.DataProvider. If you subscribe to this event at a later moment, the fields will be generated and the tree view in the field list will be populated will all properties.

    In case you are still experiencing any further difficulties, it would be greatly appreciated if you can submit a support ticket from your Telerik account and provide a sample project demonstrating the undesired behavior that you are facing. Thus, we would be able to investigate the precise case and provide further assistance. Thank you in advance for your cooperation.
     
    I hope this information helps. If you need any further assistance please don't hesitate to contact me. 

    Regards,
    Dess | Tech Support Engineer, Sr.
    Progress Telerik

    Five days of Blazor, Angular, React, and Xamarin experts live-coding on twitch.tv/CodeItLive, special prizes, and more, for FREE?! Register now for DevReach 2.0(20).

Back to Top