I had a table in the UI where one of the column is a LOV. The requirement was to default another field say PayeeName in the same row based on value selected from the LOV only when the PayeeName field does not have a value already.
To accomplish that the simplest idea is to bind the ReturnPopupEvent to a managed bean method and some how get one of the returned value from LOV in this method. Then check if the PayeeName field is null. If yes then update it otherwise just ignore. This can be done quite easily as follows:
1. Go to the ReturnPopupEvent property of the LOV and bind it to a manged bean method.
2. In the bean method you can write the code as below:
public void myLOVListener(ReturnPopupEvent returnPopupEvent) {
List lst= (List)returnPopupEvent.getReturnValue();
String value = null;
for(Object obj : lst{
value = ((Map)obj).get("RoleName"));
if(value != null)
break;
}
//get the iterator binding to get handle of the current row
DCBindingContainer bc =
(DCBindingContainer)BindingUtils.getBindingContext().getCurrentBindingsEntry();
DCIteratorBinding profItr =
bc.findIteratorBinding("MyTableVOIterator");
Row rw = profItr.getViewObject().getCurrentRow();
if(rw != null && rw.getAttribute("PayeeName") == null){
rw.setAttribute("PayeeName", value);
}
}
Please note that I am not really checking for null etc. as my intention is just to show how to use returned values from the returnPopupEvent.
Another important point to note down is that the LOV must have RoleName as one of the return attributes in its configuration in the model.
Wednesday, November 21, 2012
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment