Protect or Grayout rows in list records
Application Type
Traditional Web

I have a Traditional "e-commerce" Web application that displays list of available products, currently the list displays only products that are available in store. I did this by using a filter condition in the aggregate to select rows where "NOT ProductsList.IsReserved" "IsReserved" is a database column with Boolean type and displayed on screen with a Checkbox type. 

But my business wants to display all products even if they're not available to create a sense of urgency for the customers to place an order asap for the available products. I can display all the rows in the ProductsList by removing the above filter. 

But, the user may uncheck/check the rows that were already taken by someone else. To prevent that, I need to protect those rows that were already taken by some else. Please suggest ways that I can use to protect/gray out the rows already taken. 

Thanks much in advance. 

OSCapture.JPG

Hello.

To gray out the check box you can set the "Enabled" property of the checkbox with the value of your boolean like you did on the filter previously "not IsReserved".

Be aware that you should also validate if the item "IsReserved" on the logic to make sure that nobody manages to pick reserved products (for example on the OnChange of the Select checkbox).

If you have any question feel free to ask.

Best regards.


Thank you Tiago. 

I am able to gray out the checkbox. I cannot use the OnChange Event as the user may want to select more than one row from the available rows, so I have a button "SELECT ITEMS" which will take the user to a new screen where the user can review his selection. 

I encountered another problem that, the "SELECT ITEMS" screen action is actually selecting the grayed out rows and also, duplicating the rows selected if user navigates back to the display screen to add more rows to selection. How can I stop the duplication? Attached is the flow from SELECTITEMS screen action. 

For each row in the Display List, if IsSelected = true, it updates the row as selected in the DB, and then creates a record into another table as "Selected" row. How can I check for duplicates before creating a row into the "Selection" table? I think I should move the DB update to mark the row as selected to another place.  Thank you. 

selectitems.JPG

You should use createorupdate action to avoid duplicates been created, this will update the record if it is present in the DB rather than creating a new one.

Remove 2 action from your logic 1. update 2. create. use createorupdate action which will do everything in one go.

Makes sense. I will try this and let you know. 

Thanks Ajay.

Hi Ajay, Using 

CreateOrUpdateSelection

did not help much with the duplicates. It's still adding duplicate records. Here is the new flow. 

Can you please elaborate me what you are trying to ache vie in this action?

You have a button which will update the selected status? or what the action does.

Regards

Ajay A

The button will add the selected rows from the displayed list to a new table called StockSelection. This table will then used to build a message for backend systems, and once the message is sent all records gets deleted (for that session id). 

Since I was not showing the taken rows on the screen, there was no duplicate until now. And I made a change to display all rows (taken and available) on the list, whenever the user click on the SELECT ITEMS button, it is adding all rows which has a TRUE value on "IsReserved" flag to the StockSelection table even if there is already an entry for the rows in that table. 

Please let me know if that makes sense, Thank you

Do you have a reference of IsReserved table in StockSelection table?

So that, when user selects a checkbox the create/update action will check if the current IsReserved ID is present in StockSelection table if it is present it will update if not it will create a new one.

Regards

Ajay A

Yes, I assigned the Record Id from the source record as the Record Id for the Selection table. Please see below. 


Can you please share me the OML if possible?

Sorry I'll have to check with my peers if I am allowed to do so. I will let you know tomorrow? Thank you


Hello,

Please refer the sample to make the entire row grey for products not available, please let me know if it works. https://andrew-ajay.outsystemscloud.com/Charts/Sheet1s.aspx

To make the checkbox disabled use the suggestion provided by Tiago Oliveira in the above comment.

Regards

Ajay A

RowGreyout.oap

You can also have the checkbox enclosed in an IF[ProductsList.IsReserved=True]

  • True: Checkbox
  • False: Text[This product is taken]

Checkbox will be only available for the products that has not been reserved.

Regards

Ajay A

Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.