Thanks Mike for your thoughts.
The first 2 approaches are not applicable for me as you suspected.

Yes, my data I completely homogenious. SubItem and Item contain 100% the
same attributes for display.
But I have an open question to your 3rd approach:
If my datatable contains a List with ItemHolders, how can I achieve that
always n Items (not ItemHolders or SubItems) are rendered on each page?

Say I have a datatable with n=4 items on each page:
Page1: 
        Item1
        Item2
        Item3
        Item4
Page2
        Item5
        Item6
        Item7
        Item8

When the user clicks now on Item2, I need something like a drill
functionality:
Page1
        Item1
        Item2
                SubItem2_1 (indented by css)
                SubItem2_1
        Item3
        Item4
Page2
        Item5
        Item6
        Item7
        Item8

Would I have to create a new Renderer for the table and a new Scroller
if the dataModel contains a List with ItemHolders?

Michael

-----Original Message-----
From: Mike Kienenberger [mailto:[EMAIL PROTECTED] 
Sent: Mittwoch, 16. August 2006 15:41
To: MyFaces Discussion
Subject: Re: render a complex datatable ???

Here are a few ways I've handled this situation.   The first two are
probably not applicable.

1) Use a t:popup to show the subitem values for a column.   The
displayed column value is the first subitem in the list.   For a
"name" column, for example, I'd show "Bob [4]" with the "[4]" in a
different color, and when the mouse hovers over the "[4]", It'd show
"Bob<br\>Fred<br\>George<br\>Tom" in the popup.

2) Use an inner dataTable to display the elements.   The column would
contain
"<table><tr><td>Bob</td></tr><tr><td>Fred</td></tr><tr><td>George</td></
tr><tr><td>Tom</td></tr></table>"
 when displayed.  This can work fairly well when the data spans
multiple columns.

3) Create a ItemHolder class containing a reference to an Item and a
reference to a SubItem.    Build a list of these with Items and
Subitems as appropriate for display, and assign this list to the
dataTable value.    Then in your columns, display something  depending
on whether the item or the subitem value is non-null.

It'll depend on the data how this might look.   If the data is
homogenious, then you can do something like

<outputText value="#{(null == itemHolder.item) ?
itemHolder.subItem.subName : itemHolder.item.name}"

Or you can do something like

<outputText rendered="#{null ne itemHolder.item}"
value="#{itemHolder.item.name}">
<image rendered="#{null ne itemHolder.subItem}"
data="#{itemHolder.subItem.picture.data}">

I think you can even go so far as to make the column itself rendered
or not rendered, thus having the subitem columns and item columns
differ in number, but you'd want to test this.

This might look cleanest as you could list all of the item columns,
then all of the subitem columns on your page.


On 8/16/06, Michael Heinen <[EMAIL PROTECTED]> wrote:
> I have a datatable with Items in it.
>
> One column in the datatable contains a link to show SubItems of an
Item.
>
> These SubItems have to be displayed also in the datatable below the
clicked
> Item in additional rows.
>
> The row (or the columns) of these SubItems have special css classes
for
> visualization. The number of columns is the same for Items and
SubItems.
>
> Moreover the rows (Items and SubItems) contain checkboxes.
>
>
>
> The datatable is bound to a PagedListDataModel in the BackingBean as
> mentioned in the WIKI.
>
> This dataModel contains a List of Items and I have to display e.g. 20
Items
> on each page, regardless of SubItems.
>
> The class Item contains a method getSubItems().
>
>
>
> What is now the best approach to visualize these SubItems in the
datatable?
>
> I think I have just to output additional table rows.
>
>
>
> a) Can I achieve this with a custom TableRenderer?
>
> The HtmlTableRendererBase contains a method afterRow(FacesContext
> facescontext, UIData uidata).
>
> Can I overwrite this method and place my logic there?
>
> uiData.getRowData() returns the last rendered Item.
>
> How can I now render additional rows with columns (and their children)
for
> these SubItems?
>
>
>
> b) Or would it be easier to manipulate the dataModel and add the
SubItems to
> the DataModel?
>
> I am not sure how to display the right number of Items on a page in
this
> case if the DataModel contains both, Items and SubItems?
>
>
>
>
>
> Any help is highly appreciated
>
> Michael




Reply via email to