Hello,
I have array of CDT within CDT. When I'm trying to populate data from that array to grid column I'm getting blank value with index function.
CDT Structure:
Datasubset value:[ userAssignedRequestName="test", users=[userName=dc_creator, email=dc_creator@bankcorp.com, phone=410-858-8811, firstName=test User, lastName=, status=active, role=xxxx, lastUserAction=creator]; [userName=dc_modifier, email=dc_modifier@bankcorp.com, phone=410-858-8812, firstName=test User2, lastName=, status=active, role=xxxx, lastUserAction=modifier]];
Below code is not returning user array:
a!gridTextColumn( label: "User Name", field: "lastUpdatedUserId", data: rule!REST_getLastUpdatedUser( index( local!datasubset.data, "users", {} ) ) ),
above highlighted code is not returning users array. Can anyone faced this issue with nested CDT ?
inside rule rule!REST_getLastUpdatedUser I have logic to return particular user name.
Discussion posts and replies are publicly visible
Hi Tushar,
I am suspecting that "you have already applied data while fetching the datasubset in query entity". Please remove data in index and tried the below.
a!gridTextColumn(
label: "User Name",
field: "lastUpdatedUserId",
data: rule!REST_getLastUpdatedUser(
index(
local!datasubset,
"users",
{}
)
),
below code is working for me (For time being I have hard coded values)
load( local!data: { userAssignedRequestName: "test", users: { { userName: "dc_creator", email: "dc_creator@bankcorp.com", phone: "410-858-8811", firstName: "test User", lastName: "", status: "active", role: "xxxx", lastUserAction: "creator" }, { userName: "dc_modifier", email: "dc_creator@bankcorp.com", phone: "410-858-8811", firstName: "test User", lastName: "", status: "active", role: "xxxx", lastUserAction: "modifier" } } }, local!pagingInfo: topaginginfo( 1, - 1 ), a!gridField( label: "Grid", totalCount: 2, columns: { a!gridTextColumn( label: "User Name", field: "lastUpdatedUserId", data: index( local!data, "users", {} ) ) }, value: local!pagingInfo, saveInto: local!pagingInfo
Thanks
Siva Chimata
Hi
This is what you have mentioned in one of your replies..
"Below is the REST_getLastUpdatedUser. Input is users array and out put is userName text. This rule works fine independently."
If you are expecting single text to be displayed as it is in grid you need to wrap it with curly braces.
a!gridTextColumn( label: "User Name", field: "lastUpdatedUserId", data: { rule!REST_getLastUpdatedUser ( index(local!datasubset.data,"users",{}) ) } )
Regards,
Mayur Mondhe
Hi tushark171
Try below code, it will return as you expected and modify your rule accordingly.
rule!R_Expr_ReturnFirstUserName(ri!arrayValues) arrayValues (Any Type)
if(
rule!APN_isEmpty(
ri!arrayValues
ri!arrayValues,
ri!arrayValues[1].userName
===================================================
rule!R_SailGrid_UsersList
load(
local!pagingInfo: a!pagingInfo(
startIndex: 1,
batchSize: 2
local!data: {
userAssignedRequestName : "test",
users: {
{
userName : "dc_creator",
email : "dc_creator@bankcorp.com",
phone : "410-858-8811",
firstName : "test User",
lastName : "",
status : "active",
role : "xxxx",
lastUserAction : "creator"
},
userName : "dc_modifier",
}
with(
local!datasubset: fn!todatasubset(
local!data,
local!pagingInfo
a!gridField(
totalCount: local!datasubset.totalCount,
columns: {
label: "userAssignedRequestName",
field: "userAssignedRequestName",
data: index(
local!datasubset.data,
"userAssignedRequestName",
label: "users",
field: "users",
data: a!forEach(
rule!R_Expr_ReturnSingleValue(
a!flatten(
fv!item,
null
) },
value: local!pagingInfo,
saveInto: local!pagingInfo