[
https://issues.apache.org/jira/browse/TOMAHAWK-1133?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12535568
]
David Brainard commented on TOMAHAWK-1133:
------------------------------------------
Hi Zdenek ,
According to the API docs
"we keep iterating through the list until we reach the end,"
i.e the list of row classes should be iterated till the end.
consider a case in which the no of columns rendered in the first page is less
than the size of the the list of rowclasses
for e.g:
the no of rows rendered in the fist page is 3 but the size of rowclass list is
6 as given in the example above(bug description),
Then the behavior should be something like this:
the rows in the first page should have the the first three items of the list
assigned to them and the 3 rows in the next page should have the next 3 styles
assigned to them since we have to iterate till the end of the rowclasses. Now
that we have reached the end of the list the next page will have the rowclasses
assigned from the starting of the list i.e the pattern of the rowclasses will
be repeated for every 2 pages in this case.
But the behavior which we have now is something like as follows:
the rows in the first page have the classes assigned to them correctly but when
we go to the next page we get the same first three rowclasses assigned to them
in spite of the fact that we have not iterated till the end of the rowclasses
list.
The actual problem is that the rowclasses are not iterated till the end. They
are just iterated for every page from the starting.
I have looked into this problem. The problem is in this piece of code in
HtmlTableRendererBase
if (nc == 0) {
// first column in table, start new row
beforeRow(facesContext, uiData);
HtmlRendererUtils.writePrettyLineSeparator(facesContext);
renderRowStart(facesContext, writer, uiData, styles, nr );
}
The rowStyleIndex i.e nr which is passed to the method renderRowStart is the
actual problem. Since it is a counter it starts every time from 0 and even when
i navigate to the next page it starts from 0 so this causes the table to render
the classes corresponding to the first page rather than the good classes.
this fails for the particular case where "no of rowclasses" > "no of rows
rendered in a particular page".
so if we pass the actual row no instead of the counter this will solve the
problem. I am looking into it.
Thanks and Regards,
David Brainard Sounthiraraj.
> Data Scroller doesnt honor dynamic rowclasses during pagination
> ---------------------------------------------------------------
>
> Key: TOMAHAWK-1133
> URL: https://issues.apache.org/jira/browse/TOMAHAWK-1133
> Project: MyFaces Tomahawk
> Issue Type: Bug
> Components: Data Scroller
> Environment: Myfaces 1.1.5, Tomahawk 1.1.7snapshot, Tomahawk 1.1.6,
> Tomcat 6.0
> Reporter: David Brainard
>
> While using a data scroller with datatable if we specify the rowclasses
> dynamically(through value binding) only the first page gets the rowclasses
> assigned properly . When we try to do pagination and go to other page the
> same rowclasses which were used in the first page repeats i.e the rowclasses
> doesnt get assigned properly.
> for e.g; if i have a tag defined like this
> <t:dataTable id="myDetailDataTable" var="row"
> value="#{testBean.dataList}"
> columnClasses="#{testBean.styleClass}"
> headerClass="headerClass" footerClass="footerClass"
> rowClasses="#{testBean.rowClass}"
> styleClass="dataTable" rows="3" >
> and my rowclass returns something like this
> public String getRowClass() {
> return "rowOdd,rowOdd,rowEven,rowEven,rowEven,rowOdd";
> }
> in first page the generated rowclasses are correct which is as follws:
>
> 1st row:rowOdd,
> 2st row:rowOdd,
> 3st row: rowEven
> but when i navigate to next page the rowclasses assignment remains the same
> as first page.
> 1st row:rowOdd,
> 2st row:rowOdd,
> 3st row: rowEven
> but it should be as follows:
> 1st row:rowEven,
> 2st row:rowEven,
> 3st row: rowOdd
>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.