Community Tip - Want the oppurtunity to discuss enhancements to PTC products? Join a working group! X
I'm building a mashup that is an experience portal. A user will log-in and use the portal to view which experiences they have access to and other data associated with those experiences. One of the types of experiences I have requires the user to use it multiple times. I want to allow the user to see the history of use by using a tree grid. I only need to go down one level of children, and not every experience needs children. I've already figured out how to show the expandability of a row, my problem is getting the child data to show up. I've written a service that should work (I'll share it below), but the children don't show up. Any help would be greatly appreciated.
//input: selectedExperience (InfoTable DS: AR_ExperiencesForGroups)
// brought in by SelectedRow in the mashup
let result;
// result: STRING
let username = Resources["CurrentSessionInfo"].GetCurrentUser();
if (selectedExperience.rows[0].hasChildren) {
//Example experience name: "GBU-10 Quiz, Online"
let experienceName = selectedExperience.rows[0].ExperienceNameAlias;
let experienceSplit = experienceName.split(' ');
let arr;
for (arr = 0; arr < experienceSplit.length; arr++) {
if (experienceSplit[arr] != '') {
break;
}
}
let experienceWeapon = experienceSplit[arr];
if (experienceWeapon.includes('-')) {
let weaponSplit = experienceWeapon.split('-');
experienceWeapon = weaponSplit[0] + weaponSplit[1];
}
//Tables have a standard naming convention that this follows
let resultsTableName = username + '_' + experienceWeapon + '_ResultsDataTable';
try {
// result: INFOTABLE dataShape: "Results_For_IndividualsDT"
result = Things[resultsTableName].GetDataTableEntries({
maxItems: 50 /* NUMBER */
});
} catch (err) {}
}
Hi Ike@ACE,
Here is the link to some Advanced Grids Samples File which also contain examples for the Tree Grid widget (HierarchicalPartsExample mahup) in case it can help. The data for the Tree Grid in this example is retrieved from a datatable called PartsTable and then parsed by a service called GetPartsData on the GridAdvancedExampleServices Thing.
Thanks for the prompt response. I have already tried looking through all of that to try and figure out what I'm doing wrong and it just about made my head explode. I didn't really understand how it was working or how to get it to work. From what I understood, it was creating the tree structure dynamically, which is not really what I need anyway. After all, I'm trying to pull data from multiple data tables, not just one. The first data table will have all of the parent rows and the second set of data tables will populate the child rows of the parent rows that do expand.
Looking at your script, is my understanding correct that the data you actually want to display in your Tree Grid is the data from a DataTable (resultsTableName, depending on user) ?
If so, the fact that you are missing the children rows might be due to missing the isParent column in your DataTable. The DataTable populating the Tree Grid Advanced needs a hasChildren column :
Let me just make sure that I'm reading this right. You're saying that the top row needs <hasChildren> and the child rows underneath of it need <isParent>? Or do all entries need both? 'Cause my parent rows have the have the <hasChildren> property, but my child rows have neither of these. Also, I'm not sure if you noticed, but there are two different data shapes being used. Is that legal? Or do they need to be the same?
Hi Ike@ACE,
I have made some additional tests and the hasChildren column is not required to actually display the children nodes. It is however required for some other functionalities like "ExpandRowOnDoubleClick" as per In ThingWorx Tree Grid Advanced widget ExpandRowOnDoubleClick option does not work for expanding but only for collapsing. In general it is advised to have a hasChildren column that you can map to the "HasChildrenFieldName" parameter of your Tree Grid Advanced.
I don't know anything about having to have a isParent column though, I would rather advise to have a ParentID column + hasChildren.
Regarding your service I am really not sure why it is not showing the child data in your mashup. If the content of your DataTable looks something like what is shown in the attached screenshot you should be able to display your data at runtime. I am also attaching the entities in case they can help. Also note that there is an example set of entities available under
Advanced Grids Samples File that can help with Working with Tree Grid Data.
Hi Ike@ACE.
If one of the previous responses helped you to find a solution to your problem, please mark the appropriate one as the Accepted Solution for the benefit of others with the same issue.
Regards.
--Sharon