return null != #ROW().store ? #MSG(customer, store) + ":" + #ROW().store.address.city.city + " - " + #ROW().store.address.city.country.country + " (" + #ROW().store.staff.lastName + ")" : "";
return null != #ROW().address ? #ROW().address.address + " - " + #ROW().address.city.city
+ " - " + #ROW().address.city.country.country : "";
return !row.isActive() ? #COLOR(SWT.COLOR_YELLOW) : null;
return !row.isActive() ? #COLOR(SWT.COLOR_YELLOW) : null;
\\
**renders the following layout:**\\
{{tutorial:grid_controller.png?600 | Grid controller}}
Explanations:\\
* Line 3 - rowHeaderVisible="true": a row header continaing line number is visible on the left of the grid.
* Line 10 - : Column can be grouped and a toggle gives a way to expand or to collapse group of columns.
* Line 11 - : When collapses, this column is displayed.
* Lines 12 and 15: Return computed value for store and address.
* Lines 19 and 22: Background is **Yellow** when customer is not valid.
\\
return null != #ROW().address ? #ROW().address.address
+ " - " + #ROW().address.city.city
+ " - " + #ROW().address.city.country.country : "";
is equivalent to
if (null != customer.getAddress())
return customer.getAddress().getAddress() + " - "
+ customer.getAddress().getCity().getCity() + " - "
+ customer.getAddress().getCity().getCountry().getCountry();
else
return "";
So, this grid controller works with query containing all needed jointures. E.g. use example query described in page [[complete_query#changed_query|complete query]].