Differences between revisions 13 and 14
Revision 13 as of 2012-07-12 15:36:33
Size: 3552
Editor: BobHarner
Comment: Updated URL to API docs
Revision 14 as of 2012-07-20 21:11:41
Size: 3640
Comment:
Deletions are marked like this. Additions are marked like this.
Line 36: Line 36:
<t:grid t:source="list" row="person"> <t:grid t:source="list" add="details" row="person">
Line 43: Line 43:
Unfortunately a change in the page class is also required: 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).

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:

  • Tapestry 5.1:

<t:grid t:source="list" exclude="id"/>
  • Tapestry:

<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 :

  • Template part :

<t:grid t:source="list" model="model"/>
  • Java part :

    /** 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

  • Template part :

<t:grid t:source="list" t:id="theGrid"/>
  • Java part :

    /** 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":

  • Template part :

<t:grid t:source="bill" model="model" />
  • Java part :

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

Tapestry5GridComponent (last edited 2012-07-20 21:11:41 by KimballRobinson)