Appian Community
Site
Search
Sign In/Register
Site
Search
User
DISCUSS
LEARN
SUCCESS
SUPPORT
Documentation
AppMarket
More
Cancel
I'm looking for ...
State
Not Answered
Replies
5 replies
Subscribers
10 subscribers
Views
3462 views
Users
0 members are here
Share
More
Cancel
Related Discussions
Home
»
Discussions
»
Data and Records
I have a record type that's based on a data type which has a nested CDT as o
John Stretton
over 9 years ago
I have a record type that's based on a data type which has a nested CDT as one of its fields, and I'd like to allow users to search this record list based on a field of the nested CDT. For example, let's say that my entity-backed record type is based on a CDT called Car, and one of the fields of the Car CDT is "owner", which is of the type Person. The CDT Person has a text field called "name".
How can I configure the list view item for the Car record type so that the user is able to use the search box to search based on the field rf!owner.name? Is this even possible?
OriginalPostID-206205
OriginalPostID-206205
Discussion posts and replies are publicly visible
0
greggl
over 9 years ago
Yes it is possible, if you're willing to be creative. I was told Appian unofficially support my working solution below which enables searching a Records View by CDT fields. Technically Appian only allows searching for Records based on Fields that are part of the Title. But as you see below by including a 'if(
false,fn!concat(rf!request.description,...', it always evaluates to False so don't display in the Records View yet the Records are searchable by the CDT fields (ex. request.decscription) as the If(false) function is part of the Title field.
The end result is the user can search the Records view by CDT fields as desired. Problem solved?
= a!listViewItem(
title: fn!concat("Contract Request Record: " & rf!request.legalComments,
if(
false,
fn!concat(
rf!request.description,
rf!request.requestId,
rf!request.vendor
),
""
)
),
details: if(rf!request.requestId="",{},"Request ID: " & rf!request.requestId & char(10)) &
"Vendor: " & rf!request.vendor & char(10) & "Value: " & dollar(rf!request.cost)
& char(10) & "Requestor: " & rule!APN_displayUser(rf!request.requestor)
& char(10) & "Request Status: " & rf!request.requestStatus,
image:cons!CM_contractRequestListImage
)
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
0
Jason Ruvinsky
Certified Senior Developer
over 9 years ago
We have used Views to back our Entity-based records, that way all the logic can be handled on the DB end, and the CDT can be fairly clean. This is also much better for performance, and we've created a column in the view that concatenates the various possible search terms (which we've added to the title using the method that Greggl shows above)
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
0
ChristineH
Certified Lead Developer
over 9 years ago
FYI - I think in 16.1 all columns of the grid layout for the record listing are now searchable!
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
0
John Stretton
over 9 years ago
Thanks, Gregg and Jason. I've managed to achieve a similar outcome with other record types using left(rf!fieldName,0), but for some reason this particular record is not behaving. Maybe this is a bug.
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
0
John Stretton
over 9 years ago
I think I've found the issue. The title parameter of my listViewItem currently reads as follows:
title: "#" & rf!ID & " " & char(10148) & " " & rf!incidentType & if(isnull(rf!Project),""," " & char(10148) & " ") & rf!Project.projectName & if(isnull(trim(rf!incidentTitle)),"",": ") & rf!incidentTitle
Any fields that are referenced AFTER if(isnull(rf!Project)...) are not searchable. If I write left(rf!Project.projectName,0) BEFORE the isnull() call, then Project.projectName becomes searchable. How strange.
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel