Skip to main content
November 4, 2021
Question

using choose function with wherecontains in a record to display color based on condition.

  • November 4, 2021
  • 6 replies
  • 0 views

Hi community,

I want to use choose instead of nested if to display status text in different colors.

I tried this expression and it throws this error A grid column [label=“Status”] has encountered an error. Expression evaluation error at function 'choose' [line 58]: Invalid index (1) for list: valid range is empty.

choose(wherecontains({fv!row[aRecord.status]}, cons!STATUSES)[1],"SECONDARY", "SECONDARY", "SECONDARY", "POSITIVE", "NEGATIVE", "STANDARD")

what am i doing wrong here?

Kind Regards,

Erik

6 replies

selvakumark
Participating Frequently
November 4, 2021

Hi Erik,

Have you checked the result of wherecontains() first to check whether it is returning the correct value?

mikes0011
Brainy
November 4, 2021

Yes, the code "wherecontains({fv!row[aRecord.status]}, cons!STATUSES)" should be first run by itself to make sure it returns a valid value.

The Expression Guru
csteward
November 4, 2021

Agree with the other posts here.  This is essentially how I would typically implement, it also allows you to set a default with index() in the off chance you get a status you don't expect, an error will not be generated:

a!localVariables(
  local!index: index(wherecontains({fv!row[aRecord.status]},cons!STATUSES),1,1),
  
  choose(local!index,"SECONDARY", "SECONDARY", "SECONDARY", "POSITIVE", "NEGATIVE", "STANDARD")
)

erikb0001Author
November 4, 2021

Thanks you all for the replies, I will try and report back later.

stefanhelzle0001
Brainy
November 5, 2021

Wouldn't it be easier to use displayvalue() here. Something like this should do it

displayvalue(
  fv!row[aRecord.status],
  cons!STATUSES,
  {"SECONDARY", "SECONDARY", "SECONDARY", "POSITIVE", "NEGATIVE", "STANDARD"},
  "STANDARD"
)