Thanks, Shing.
I was hoping there'd be something a little more direct (like, a
meta/injected property on the getTable().getTableRow(), but oh well.)
So, to close the loop, this is the "most performant" means I can think
of to get the ordinal numbers displayed in a Contrib:Table *without*
actually saving the ordinal numbers in the source List...
I'm pretty sure this is "pool safe" in that 2 different users won't end
up getting mixed up ordinal displays.
HTML
---------
<table jwcid="table" cellpadding="0" cellspacing="0">
<tr class="headerRow">
...snip...
</tr>
<tr>
<td jwcid="ordinalColumnValue">
<span jwcid="ordinalNumber">1</span>
</td>
.page File
----------
<component id="table" type="contrib:Table">
<binding name="source" value="documents"/>
<binding name="columns"
value="literal:ordinal:#:!ordinal,
docId:Doc ID:docId,
....snip...."/>
</component>
<component id="ordinalColumnValue" type="Block"/>
<component id="ordinalNumber" type="Insert">
<binding name="value" value="ognl:ordinal"/>
</component>
Java Code
---------
@InjectComponent("table")
public abstract Table getTable();
int ordinal;
int currentPage;
int currentPageSize;
// Can't use initialize() because getTable() is null at that point
public void pageBeginRender(PageEvent event) {
ordinal = 0;
currentPage =
getTable().getTableModel().getPagingState().getCurrentPage();
currentPageSize =
getTable().getTableModel().getPagingState().getPageSize();
}
public int getOrdinal() {
ordinal++;
return (currentPage * currentPageSize) + ordinal;
}
-----Original Message-----
From: Shing Hing Man [mailto:[EMAIL PROTECTED]
Sent: Wednesday, November 01, 2006 3:44 PM
To: Tapestry users
Subject: Re: Getting the ordinal # in the Contrib:Table
The method
getCurrentPages in
org.apache.tapestry.contrib.table.components.TablesPages
returns the current page of your table.
The ordinal number of the first row of the current
page should be something like
(tablesPages.getCurrentPage() - 1) * PAGE_SIZE) + 1
Shing
--- [EMAIL PROTECTED] wrote:
> I *hope* there's a really straightforward answer to
> this and that I'm
> just a complete donkey for overlooking it, but. . .
>
> If you want to have a table that iterates over a
> List and (for example)
> spit out some properties of each element in the
> List, to wit:
>
> ---------------------------
> |Aaron | (202) 123-4567|
> ---------------------------
> |Bob | (202) 987-6543|
> ---------------------------
> etc.etc.
>
> That's really easy.
>
> But now say you want to just add an ordinal number
> as the first column
> of the table, like this:
>
> ---------------------------------
> | 1 | Aaron | (202) 123-4567|
> ---------------------------------
> | 2 | Bob | (202) 987-6543|
> ---------------------------------
> | 3 | etc. etc.
>
> That seems to be harder. The only way I see how to
> do it is to:
>
> A) Define a custom columnValue @Block
>
> B) Map that columnValue to some MyTable.java
> getOrdinal() method
>
> C) In my getOrdinal() method, get the Object
> associated with
> getTable().getTableRow();
>
> D) Assume the "source" data for the Table is a
> java.util.List, use the
> List.indexOf() method on the Object from step (C) to
> figure out what
> element it is and return that int value as the
> ordinal
>
> Please tell me I'm a donkey...
>
> Thanks,
> Tom
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
>
>
Home page :
http://uk.geocities.com/matmsh/index.html
Send instant messages to your online friends
http://uk.messenger.yahoo.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]