2 Replies Latest reply on Feb 5, 2013 9:25 PM by kvsankar

    Show Hide transient attribute making row dirty

      Hi All

      I am using an advanced table where one of the columns(Description) is shown in detail region. To implement detail region, we need a transient attribute on the VO. I was able to get everything working. But I have the following problem.

      When the user clicks Add Rows, new rows are created for user to enter information. If the user does not make any changes and clicks Apply, no transactions are committed(which is working as expected). But when the user clicks on "Show" for one of these rows and does not enter information on any of the fields for that row, the system is throwing error on some of the mandatory fields. This is because the framework is identifying them to be dirty(Since clicking show changes the value of transient attribute on VO).

      I tried the following option to get around it, but it did not work.

      * When Show/Hide is clicked, capture that event and get the row that was clicked. Perform row.setNewRowState(row.STATUS_INITIALIZED) on that row to let system know that the row is not dirty. The problem here is that when control comes to this part of the code(be it in Controller or AM), the row status is STATUS_INITIALIZED. It becomes dirty after the Show action is processed in ProcessFormRequest(I think so..)

      To get around the issue, I had to remove the Mandatory flag on some of the fields, and implement the same manually. Also, just before committing all changes, I had to loop through all rows and see those that do not have any information entered but are still dirty. Perform row.setNewRowState(row.STATUS_INITIALIZED) on them before committing.

      Can any of you tell me a better way other than how I implemented it? I want to keep the mandatory flag on the field set(VO is based on a EO) and nto remove it. The error for no value entered should not be triggered by Show/Hide being clicked. I hope I was clear enough.


      Edited by: kvsankar on Feb 5, 2013 11:20 AM