Values are not properly assigning in variables

I think, I might have addressed this one in my previous queries. 

I have a dropdown with name "Request Type" having two choices "Supply" and "Service", and there is one "Item" textfield in which Item Name needs to be entered. When user selects a "Service", then "Item" value should be stored in "Service Type" table and for "Supply" in "Supply Type" table, which is occurring with the code I have written, but the issue is "If user suppose in between changes the "Request Type" from "Service" to "Supply", then "Item" value stored in "Service Type" CDT should return back to null state and newly entered "Item" value should store in "Supply Type" CDT, which is not coming up and it's retaining both Item values in both CDTs, i.e Ex- He entered "PC" for "Supply" but then changed it's "Request Type" to "Service" and entered Item as "S/w Installation", then as a result "Supply Type" CDT has Item value "PC", and with that "Service Type" CDT has Item value "S/w Installation", which shouldn't be the case i.e. Item value "PC" in "Supply Type" CDT should default back to null.

Code below:

a!forEach(
          items: ri!requestTypeRef,
          expression: a!gridRowLayout(
            id: fv!index,
            contents: {
              a!dropdownField(
                label: "request type " & fv!index,
                placeholderLabel: "---Please select value---",
                choiceLabels: cons!OSR_TEXT_ARRAY_REQUEST_TYPE,
                choiceValues: cons!OSR_TEXT_ARRAY_REQUEST_TYPE,
                value: index(fv!item, "RequestTypeName", {}),
                saveInto: fv!item.RequestTypeName,
                required: true
              ),
              a!textField(
                label: "item " & fv!index,
                value: if(
                  ri!requestTypeRef[fv!index].RequestTypeName = "Service",
                  index(
                    ri!serviceTypeRef[fv!index],
                    "ServiceTypeName",
                    {}
                  ),
                  index(
                    ri!supplyTypeRef[fv!index],
                    "SupplyTypeName",
                    {}
                  )
                ),
                saveInto: if(
                  ri!requestTypeRef[fv!index].RequestTypeName = "Service",
                  ri!serviceTypeRef[fv!index].ServiceTypeName,
                  ri!supplyTypeRef[fv!index].SupplyTypeName
                ),
                required: true
              )

Thanks

  Discussion posts and replies are publicly visible

Parents
  • I'd suggest adding an extra save to your dropdown field that clears out the value of the other property whenever you change the dropdown. You should be able to do something like this:

    a!dropdownField(
      label: "request type " & fv!index,
      placeholderLabel: "---Please select value---",
      choiceLabels: cons!OSR_TEXT_ARRAY_REQUEST_TYPE,
      choiceValues: cons!OSR_TEXT_ARRAY_REQUEST_TYPE,
      value: index(fv!item, "RequestTypeName", {}),
      saveInto: {
        fv!item.RequestTypeName,
        if(
          fv!item.RequestTypeName = "Service",
          a!save(target: fv!item.SupplyTypeName, value: null),
          a!save(target: fv!item.ServiceTypeName, value: null)
        )
      },
      required: true
    )

Reply
  • I'd suggest adding an extra save to your dropdown field that clears out the value of the other property whenever you change the dropdown. You should be able to do something like this:

    a!dropdownField(
      label: "request type " & fv!index,
      placeholderLabel: "---Please select value---",
      choiceLabels: cons!OSR_TEXT_ARRAY_REQUEST_TYPE,
      choiceValues: cons!OSR_TEXT_ARRAY_REQUEST_TYPE,
      value: index(fv!item, "RequestTypeName", {}),
      saveInto: {
        fv!item.RequestTypeName,
        if(
          fv!item.RequestTypeName = "Service",
          a!save(target: fv!item.SupplyTypeName, value: null),
          a!save(target: fv!item.ServiceTypeName, value: null)
        )
      },
      required: true
    )

Children