r40444
(Rimantas Nedzinskas)
August 17, 2017, 9:41am
#1
Hi,
I have a Lookup Field on the screen based on Value Datasource.
<valueCollectionDatasource id="YearDs">
<query>
<![CDATA[select distinct o.year from demo$Order o]]>
</query>
<properties>
<property datatype="int"
name="year"/>
</properties>
</valueCollectionDatasource>
...
<lookupField optionsDatasource="YearDs"/>
I don’t know how to configure Lookup field to show the ‘year’ property instead of sys$KeyValueEntity-?(…)
iskandarov
(Rostislav Iskandarov)
August 18, 2017, 7:04am
#2
Hi,
OptionsDatasource of LookupFiled returns a list of entities. So that is why you see the list of sys$KeyValueEntity .
You can manually fill options list of the LookupField. For instance, as I do in the following code.
See the documentation for more information about DataManager .
public class DemoEdit extends AbstractEditor<Demo> {
@Inject
private LookupField lkpField;
@Inject
private DataManager dataManager;
@Override
public void init(Map<String, Object> params) {
List<Integer> options = new ArrayList<>();
String queryString = "select distinct o.year from demo$Order o";
ValueLoadContext valueLoadContextontext = ValueLoadContext.create()
.setQuery(ValueLoadContext.createQuery(queryString));
valueLoadContextontext.addProperty("year");
List<KeyValueEntity> resultList = dataManager.loadValues(valueLoadContextontext);
for(KeyValueEntity entry : resultList){
options.add((Integer)entry.getValue("year"));
}
lkpField.setOptionsList(options);
super.init(params);
}
}
iskandarov
(Rostislav Iskandarov)
August 18, 2017, 7:31am
#3
And there is a simple way. Just set captionProperty - “year”.
<lookupField id="lkpField"
captionProperty="year"
datasource="demoDs"
optionsDatasource="yearDs"
property="orderLink"/>
r40444
(Rimantas Nedzinskas)
August 18, 2017, 9:03am
#4
Rostislav,
Thank you. That works.