ADF级联Lov搜索和选择弹出式自定义

时间:2015-01-20 19:11:04

标签: oracle-adf jdeveloper lov

我已经建立了一个级联LOV,其中包含分组和分区字段(带有值列表的组合框)。当我为Group选择一个值并单击Search and Select对话框的Division字段时,SearchAndSelect弹出窗口同时将Group和Division字段作为搜索条件(在我的视图条件中定义)。

现在,有没有办法在弹出条件中填充组值,我知道where子句使用已经输入的Group值,但是我想在SearchAndSelect弹出窗口中将它显示给用户搜索区域。

1 个答案:

答案 0 :(得分:1)

在lov弹出窗口中没有预先设置搜索字段值的声明方式。虽然可以通过为lov组件使用自定义launchPopupListener来完成。要了解有关如何使用lov弹出式监听器的更多信息,请参阅Building Custom Lovs

为您的从属lov创建launchPopupListener方法。

<af:inputComboboxListOfValues id="inpClv2" popupTitle="Search and Select: #{bindings.StateProvince.hints.label}" value="#{bindings.StateProvince.inputValue}" label="#{bindings.StateProvince.hints.label}" model="#{bindings.StateProvince.listOfValuesModel}" required="#{bindings.StateProvince.hints.mandatory}" columns="#{bindings.StateProvince.hints.displayWidth}" shortDesc="#{bindings.StateProvince.hints.tooltip}" partialTriggers="inpClv1" launchPopupListener="#{backingBeanScope.lovBean.stateLaunchPopupListener}"> </af:inputComboboxListOfValues>

在launchPopupListener中,使用first lov中的值设置搜索条件属性的值。

public void stateLaunchPopupListener(LaunchPopupEvent launchPopupEvent)
{
    UIXInputPopup lovComponent = (UIXInputPopup)launchPopupEvent.getSource();
    ListOfValuesModel model = lovComponent.getModel();
    if (model != null)
    {           
        QueryDescriptor queryDesc = model.getQueryDescriptor();
        /** Code to pre populate a Search and Select field**/
        ConjunctionCriterion conCrit = queryDesc.getConjunctionCriterion();
        List<Criterion> criterionList = conCrit.getCriterionList();
        for (Criterion criterion: criterionList)
        {
            AttributeDescriptor attrDesc = ((AttributeCriterion) criterion).getAttribute();
            if (attrDesc.getName().equalsIgnoreCase("CountryId")) 
            {
                List values = ((AttributeCriterion) criterion).getValues();
                values.set(0, "US"); //use the value from first lov
            }
        }
    }           
}