I have an editable list with a child editable list and wanted all my list to retain there position on rollback so I wrote some code.
Had to be slightly tweaked from what I user to have.
The first method saves all current iterator binding positions to a IteratorPosition class (just a pojo with range start etc getters and setters - nothing fancy)
The second method restores those positions to the iterator bindings and all is now working as I want.
Also remember this button is a toolbarbutton with the following: partialSubmit="false" immediate="true"
and a resetactionlistener - without these things it may not work correctly.
Had to be slightly tweaked from what I user to have.
The first method saves all current iterator binding positions to a IteratorPosition class (just a pojo with range start etc getters and setters - nothing fancy)
The second method restores those positions to the iterator bindings and all is now working as I want.
Also remember this button is a toolbarbutton with the following: partialSubmit="false" immediate="true"
and a resetactionlistener - without these things it may not work correctly.
public static MapsaveBindings() { Map returnValues = new HashMap (); ArrayList list = ADFUtils.getDCBindingContainer().getAllIterBindingList(); for(Object listItem : list) { if(listItem instanceof JUIteratorBinding && !"listIter".equalsIgnoreCase(((JUIteratorBinding) listItem).getName())) { JUIteratorBinding bondage = (JUIteratorBinding) listItem; Row row = bondage.getCurrentRow(); int rangeSize = bondage.getRangeSize(); int rangeStart = bondage.getRangeStart(); int currentRowIndexInRange = bondage.getCurrentRowIndexInRange(); if(row != null && rangeSize > 0) { IteratorPosition pos =new IteratorPosition(rangeSize, rangeStart,currentRowIndexInRange, bondage.getCurrentRowKeyString(), row); returnValues.put(bondage.getName(), pos); } } } return returnValues; } public static void restoreBindings(Mapbindings, boolean isDelete) { if(bindings != null) { ArrayList list = ADFUtils.getDCBindingContainer().getAllIterBindingList(); for(Object listItem : list) { if(listItem instanceof JUIteratorBinding) { JUIteratorBinding bondage = (JUIteratorBinding) listItem; IteratorPosition pos = bindings.get(bondage.getName()); if(pos != null) { if(isDelete) { ViewObject vo = bondage.getViewObject(); bondage.setCurrentRowIndexInRange(pos.getCurrentRowIndexInRange()); vo.setRangeStart(pos.getRangeStart()); if(!pos.getCurrentRow().isDead()) { Row[] rows = vo.findByKey(pos.getCurrentRow().getKey(), 1); if(rows != null && rows.length == 1) { int ridx = vo.getRangeIndexOf(rows[0]); if(ridx != -1) { vo.scrollRangeTo(rows[0], ridx); vo.setCurrentRowAtRangeIndex(ridx); } } } } else { bondage.setRangeSize(pos.getRangeSize()); bondage.setRangeStart(pos.getRangeStart()); bondage.setCurrentRowIndexInRange( pos.getCurrentRowIndexInRange()); } } } } } }
Comments
Post a Comment