More in this section
Forums / Developing with Sitefinity / Get all instances of a Generic Content control

Get all instances of a Generic Content control

The forums are in read-only mode. In case that you want to directly contact the Progress Sitefinity team use the support center. In our Google Plus group you can find more than one thousand Sitefinity developers discussing different topics. For the Stack Overflow threads don’t forget to use the “Sitefinity” tag.
2 posts, 0 answered
  1. Øystein Skjesol
    Øystein Skjesol avatar
    1 posts
    25 Sep 2005
    13 May 2009
    Link to this post
    I have a website where the same Generic Content can be placed on more than one page.

    Now, I need to write a module that gets all Pages where this control is reused.
    More - I need to get the Parent of this page.

    In pseudo-code:
    Find all Generic Content controls on current Page
    For each control:
     - find all Pages where this control is placed
    Show a total list of these Pages.Parent, hyperlinked to it. The list should be without duplicates.

    I would like to do this without messing directly with the database, but i do not know if it is possible to do in Sitefinity API without adding a lot of SQL-requests/CPU work...

    Any ideas? 
  2. Georgi
    Georgi avatar
    3583 posts
    28 Oct 2016
    13 May 2009
    Link to this post
    Hi Øystein Skjesol,

    This can be done with the API. I assure you that everything in regards to content/pages/templates can be done via API rather than SQL queries.

    You can use the following code:
            CmsManager manager = new CmsManager(); 
            // Get all GenericContent controls in a list  
            IList pages = manager.GetPages(); 
            foreach (IPage page in pages) 
                foreach (WebControl control in page.Controls) 
                    if (control.GetType() == (typeof(Telerik.Cms.Engine.WebControls.GenericContent))) 
                        Telerik.Cms.Engine.WebControls.GenericContent webControlGC = control as Telerik.Cms.Engine.WebControls.GenericContent; 
                        if (webControlGC != null
                            //The Generic Content ID of the content showed in this control is: 
                            Guid contentID = webControlGC.ContentID; 
                            Response.Write(String.Format("We are on page {0}, and the content item is {1}<br />", page.Name, contentID)); 

    Once you get the Generic Content instance, you can check if the control has a text in the Content property. If yes, then the control is using a non shared content. If no, then you can check the property ContentID in order to have a reference to the actual content item.

    I hope this helps.

    Sincerely yours,
    the Telerik team

    Instantly find answers to your questions on the new Telerik Support Portal.
    Check out the tips for optimizing your support resource searches.
2 posts, 0 answered