How to re-order columns
To change the order of columns in a Grid component you can add the "reroder" attribute:
<t:grid t:source="list" reorder="id,firstname,lastname"/>
|
How to hide a column
If you want to hide a column from the Grid:
<t:grid t:source="list" exclude="id"/>
|
<t:grid t:source="list" remove="id"/>
|
How link an entry to another page
The person's lastname shall be linked to a page "person/$ID"
<t:grid t:source="list" row="person">
<t:parameter name="lastnameCell">
<t:pagelink t:page="person" t:context="person.id">${person.lastname}</t:pagelink>
</t:parameter>
</t:grid>
|
How to add an extra column
You want to add an extra column called "details" to each line that does not have a field in the POJO:
<t:grid t:source="list" add="details" row="person">
<t:parameter name="detailsCell"> <!-- just invent a cell name -->
<t:pagelink t:page="person" t:context="[person.id,person.lastname]">${person.lastname}</t:pagelink>
</t:parameter>
</t:grid>
|
Unfortunately a change in the page class may also be required (if you don't use the "add" parameter above, or have a special model).
public class Page {
@Inject
private BeanModelSource beanModelSource;
@Inject
private ComponentResources resources;
private BeanModel model;
void pageLoaded() {
this.model = beanModelSource.create(Person.class, true, resources);
this.model.add("details", null);
}
...
|
How to add a sortable column
With the above code the column will not be sortable. To make it sortable use
this.model.add("details",null).sortable(true);
|
How to disable sorting for a column
It is very likely possible to disable sorting for a column. How is that done? One solution is to create a specific BeanModel for your Grid :
<t:grid t:source="list" model="model"/>
|
/** The model. */
@Retain
private BeanModel model;
/** The bean model source. */
@Inject
private BeanModelSource beanModelSource;
/** The resources. */
@Inject
private ComponentResources resources;
/**
* Page loaded.
*/
void pageLoaded() {
BeanModel model = beanModelSource.create(Entity.class, false, resources);
model.get("XXX").sortable(false);
}
|
How to define the initial sort column
<t:grid t:source="list" t:id="theGrid"/>
|
/** The form. */
@Component
private Grid theGrid;
@SetupRender
public void setupGrid() {
theGrid.getSortModel().updateSort("XXX");
}
|
How to rename a column
You want to rename column called "name" to "account":
<t:grid t:source="bill" model="model" />
|
public class Page {
/** The model. */
@Retain
private BeanModel model;
/** The bean model source. */
@Inject
private BeanModelSource beanModelSource;
/** The resources. */
@Inject
private ComponentResources resources;
void pageLoaded() {
this.model = beanModelSource.createDisplayModel(DeviceEquipment.class, resources.getMessages());
this.model.include("name");
this.model.get("name").label("account"); // Rename column
}
...
|
Grid component reference
See http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/Grid.html