Deliver Awesome UI with the most complete toolboxes for .NET, Web and Mobile development
Automate UI, load and performance testing for web, desktop and mobile
A complete cloud platform for an app or your entire digital business
Detect and predict anomalies by automating machine learning to achieve higher asset uptime and maximized yield
Automate decision processes with a no-code business rules engine
Optimize data integration with high-performance connectivity
Connect to any cloud or on-premises data source using a standard interface
Build engaging multi-channel web and digital experiences with intuitive web content management
Personalize and optimize the customer experience across digital touchpoints
Build, protect and deploy apps across any platform and mobile device
Rapidly develop, manage and deploy business apps, delivered as SaaS in the cloud
I had some troubles with retrieving related items between 2 Content Types within my Dynamic Module. I was executing this code, to load the related items of a Dynamic Content item:
// Get a Guid with the entered secretaries for this lawyer
var secretaryIds = lawyer.GetValue<Guid>(
Then I used this array to retrieve only the items that match:
var secretaryType = TypeResolutionService.ResolveType(
var secretaries = dynamicModuleManager.GetDataItems(secretaryType).Where(x => x.Status == ContentLifecycleStatus.Live && secretaryIds.Contains(x.Id));
This was returning 0 results. After a close look I realized that the Guid inside the secretaryIds array was corresponding to the Master version of the item, or better, the OriginalId.
Since I compare to the Id property, which I assume is the Live version of the item, the result always will be 0.
/*Gets the value of the field control.*/
i = 0; i < data.items.length; i++)
/*Sets the value of the text field control.*/
filterExpression = filterExpression +
'OriginalContentId == '
Let me know if I'm wrong, otherwise I'll use the OriginalId for loading the data.
Hi Daniel, Thank you for using our services. You are probably developing the related items selector field control following Rado's blog post? The article has been released to demonstrate the capabilities of the Sitefinity Module Builder feature upon its official release. Since then we've incorporated this functionality withing our Sitefinity Thunder plugin for Visual Studio, so now you can create a related data selector a easy a filling your the two related data types when Thunder prompts you for this information. I believe you might find this article from our documentation, which explains in details how to achieve the above mentioned functionality useful. On a side note, to answer your question - the DataService which accomodates the CRUD operations with Dynamic Modules int he backend by default operates with the master items, that's why it's better to work with the master item IDs, and get the live items from the master. Kind regards, Boyan Barnev the Telerik team
No, I use the latest version(s) of Thunder and Sitefinity. So I'm talking about the generated code by Thunder itself.
As I explained, if I use the Id property instead of the OriginalId I get no results. So since all examples and documentation about the API are talking always about the Id property to fetch data, I think it should be documented that when you use these selectors from Thunder, you must use the OriginalId, to fetch specific data.
I only want to fetch related data, that is also published and to me it seems not consistent to use the OriginalId instead of the Id?
Then I'm confused. If I use the generated code by Thunder, it does not give me back any results. That would mean that the items I'm trying to fetch are not published (Live), but they are. Well, Sitefinity tells me they are published.
I'll check it again.
Hello Daniel, The current functionality we're discussing has gone through several iterations in an attempt to achieve the most straightforward implementation. The reason for proceeding in such manner is that in Sitefinity we operate with the master item IDs. That is, the Thunder built selector would automatically filter only the live items (so that you can't select an item that's not live) but will persist the master item's Id. This has been done to accommodate the out of the box functionality of DynamicContentView to display the related data in DetailsView. Please do not hesitate to let us know if you need us to elaborate a bit further on the above, I hope it makes more sense now. Kind regards, Boyan Barnev the Telerik team
var manager =
var master = manager.GetDataItem(type, id);
var live = manager.Lifecycle.GetLive(master);
I have been going on with this exact issue for like 2 months...it's like the never-ending ticket from hell. Client has SO MANY records linked via the thunder-generated widgets, so they fixed the implimentation to be original content ID, now we're totally unable to run the API to fix those bad links...well I mean the code runs, but the results aren't saved.
The frustrating part is you only get a ticket response every few days and it's like "We're looking into it" or "Can you try"...you know after giving me a generated widget that borked the client data, and spending months on the ticket, can maybe you please just fix the problem and give me a magic script to fix it :/
sorry ...bit of a vent. The frustrating part for me is I put so much faith in Thunder, then there's a HUGE bug in it they patch...but all the data you've just entered is screwed and there's no fix released...and I get to go back and manually fix all my field controls.
Here's what you should do...just create a new thunder widget, check the code, and use that...if you're in the situation I am (as defined above), then god help you...you're in for a ride. I think there's two changes from the old versions. In the code the service paths now have "/live" on the end (as you can see) and yeah it's linked to the OriginalContentId now.