Skip to main content
March 10, 2023
Question

Editable grid

  • March 10, 2023
  • 3 replies
  • 0 views

Hi,

We are having a editable grid where the columns are relation, soeid, geid, firstname, lastname.

Relation is a dropdown field with the values {employee, contractor, client}.

Soeid is a user picker field and the remaining columns are text fields.

If user select employee or contractor in the dropdown and he should select soeid then the remaining columns will autopopulate related to the soeid.

If user select client then the soeid and geid get disabled(grayed out) and he needs to fill all the other columns.

My task is here

1. when the user first select employee and enter a soeid then the other columns will populate.

2. if the user select client again in the dropdown the soeid, geid, firstname, lastname which was already populated  should become blank.

How to achieve the above functionality

Thanks in advance.

3 replies

March 10, 2023

rows:{
a!forEach(
items:ri!relatedPersons,
expression:
a!gridRowLayout(
contents: {
rule!relatedPersonIncidentDropdown(
selectedRole: fv!item.relationship,
disabled: ri!readOnly= true,
),
a!pickerFieldUsers(
value: fv!item.soeid,
a!localVariables(
local!empData: rule!QE_Employee(soeId: fv!item.soeid).data,
if(
a!isNullOrEmpty(fv!item.soeid),
{
a!save(fv!item.geid,{}),
a!save(fv!item.firstName,{}),
a!save(fv!item.lastName,{}),
},
{
a!save(fv!item.geid, local!empData.geid),
a!save(
fv!item.firstName,
local!empData.firstName
),
a!save(
fv!item.lastName,
local!empData.lastName
),
}
)
),
},
maxSelection: 1,
showWhen: not(ri!oreRelated= true),
readOnly: ri!readOnly= true,
disabled: and(not(rule!AF_RULE_isBlank(fv!item.relationship)),
not(contains(cons!GCC_VAL_RELATION,
fv!item.relationship
)
)
)
),
a!textField(
value: fv!item.geid,
saveInto: fv!item.geid,
showWhen: not(ri!oreRelated = true),
readOnly: ri!readOnly = true,
disabled: not(
rule!AF_RULE_General_isBlank(fv!item.relationship)
)
),
a!textField(
value:fv!item.lastName,
saveInto: fv!item.lastName,
readOnly: ri!readOnly= true,
disabled: and(contains(cons!GCC_VAL_RELATION,
fv!item.relationship
),
not(ri!oreRelated= true)
)
),
a!richTextDisplayField(
showWhen: not(ri!readOnly= true),
value:
a!richTextIcon(
icon: "times",
color: "Negative",
linkStyle: "STANDALONE",
link: a!dynamicLink(
value: null,
saveInto:{
a!save(
ri!relatedPersons,
value: remove(ri!relatedPersons, fv!index)
),})))})
)

komalj3844
March 20, 2023

Hi 

Here is the code 

load(
local!a:{"employee", "contractor", "client"},
local!soeid:{"A","B"},
local!b,
local!c,
{

a!gridLayout(
headerCells: {
a!gridLayoutHeaderCell(label: "Relation"),
a!gridLayoutHeaderCell(label: "soeid"),
a!gridLayoutHeaderCell(label: "geid"),
a!gridLayoutHeaderCell(label: "firstname"),
a!gridLayoutHeaderCell(label: "lastname"),
a!gridLayoutHeaderCell(label: "")
},
rows: {
a!forEach(
items: ri!relatedPersons,
expression: a!gridRowLayout(
contents: {
a!dropdownField(
choiceLabels: local!a,
choiceValues: local!a,
value: fv!item.relation,
saveInto: {
fv!item.relation,

a!save(
local!b,
rule!KJA_decision(
relation:fv!item.relation
)),

a!save(
fv!item.soeid,
if(
index(local!b,"issoeidRequired",{})=true(),
fv!item.soeid,
null
)),

a!save(
fv!item.geid,
if(
index(local!b,"isgeid",{})=true(),
fv!item.geid,
null
)),

if(
index(local!b,"issoeidRequired",{})=true(),
{ a!save(
local!c,
rule!KJA_decision1(
relation:fv!item.relation,
soeid:fv!item.soeid
))
,

a!save(
fv!item.firstname,
local!c.lastname
),
a!save(
fv!item.lastname,
local!c.lastname
),},
a!save({fv!item.firstname, fv!item.lastname},null)
),

},
placeholder: "---Select--"
),
a!dropdownField(
choiceLabels: local!soeid,
choiceValues: local!soeid,
value: fv!item.soeid,
saveInto: {
fv!item.soeid,
a!save(
local!c,
rule!KJA_decision1(
relation:fv!item.relation,
soeid:fv!item.soeid
)),

a!save(
fv!item.geid,
local!c.geid
),

a!save(
fv!item.firstname,
local!c.firstname
), a!save(
fv!item.lastname,
local!c.lastname
),
},
placeholder: "---Select--",
disabled: not(toboolean(or(index(local!b,"issoeidRequired",{}))=true())),
),

a!textField(
value: fv!item.geid,
saveInto: fv!item.geid,

readOnly: not(toboolean(or(index(local!b,"isgeid",{}))=true())),

),
a!textField(
value: fv!item.firstname,
saveInto: fv!item.firstname,
readOnly: ri!readOnly = true,

),
a!textField(
value: fv!item.lastName,
saveInto: fv!item.lastName,
readOnly: ri!readOnly = true,

),
a!richTextDisplayField(
showWhen: not(ri!readOnly = true),
value: a!richTextIcon(
icon: "times",
color: "NEGATIVE",
linkStyle: "STANDALONE",
link: a!dynamicLink(
value: null,
saveInto: {
a!save(
ri!relatedPersons,
value: remove(ri!relatedPersons, fv!index)
),

}
)
)
)
}
)
)
}
)}
)

temp CDT i created to use in grid 

The code can be more modified with better performance . I just build to it, to give some idea on how this work can be done 

harshitb6843
March 20, 2023

Try this next time, makes the code more readable and easy to copy and paste.