All the navbar needs to know is:
1. what page am I on?
2. Is this the last page?
Passing the name of the ResultSet is not totally necessary. In fact, the
statement tag could export a boolean variable "onLastPage" or something to
indicate whether or not to offer a "next" link. The resultSet tag would set
this to true if it had, indeed, reached the last record, false otherwise. The
navbar could get this from it's pageContext.
<jdbc:connection id="conn1">
<jdbc:url>jdbc:odbc:test</jdbc:url>
<jdbc:driver>sun.jdbc.odbc.JdbcOdbcDriver</jdbc:driver>
</jdbc:connection>
<jdbc:statement id="stmt1" conn="conn1"> <!--creates boolean onLastPage-->
<jdbc:query><%= query %></jdbc:query>
<jdbc:resultSet id="myRS" loop="true" elementsPerPage="10"
pageNumberParam="pgNum"> <!--updates onLastPage-->
<tr>
<td><jdbc:getColumn position="3"/></td>
<td><jdbc:getColumn position="1"/></td>
</tr>
</jdbc:resultSet>
<jdbc:navbar pageNumberParam="pgNum"> <!--finds onLastPage-->
<jdbc:prevlink> <!-- skips if on first page -->
<a href="thisJspPage?pgNum=<%=previous%>">previous</a>
</jdbc:prevlink>
<jdbc:nextlink> <!-- skips if on last page -->
<a href="thisJspPage?pgNum=<%=next%>">next</a>
</jdbc:nextlink>
</jdbc:navbar>
</jdbc:statement>
Now there's some tag bloat for ya.
-Mark
mark at nullcraft.org
"Ciot, Thierry" wrote:
>
> The problem is that the result set is removed from page context past
> </jdbc:resultSet>
> thus <jdbc:navbar> cannot call isLast.
>
> Maybe we need something like this:
>
> <jdbc:statement id="stmt1" conn="conn1">
> <jdbc:query><%= query %></jdbc:query>
> <jdbc:resultSet id="myRS" from="32" to="22">
> <jdbc:loopResultSet>
> <tr>
> <td><jdbc:getColumn position="3"/></td>
> <td><jdbc:getColumn position="1"/></td>
> </tr>
> </jdbc:loopResultSet>
>
> <jdbc:navbar resultSet="myRS" pageNumberParam="pgNum">
> <a href="thisJspPage?pgNum=<%=previous%>">previous</a>
> <a href="thisJspPage?pgNum=<%=next%>">next</a>
> </jdbc:navbar>
>
> </jdbc:resultSet>
> </jdbc:statement>
>
> BTW, I prefer a from and to attribute because we can specify a reverse order
> as in the previous example.
>
> Thierry.
>
> -----Original Message-----
> From: Mark Howell [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, July 24, 2001 11:59 AM
> To: [EMAIL PROTECTED]
> Subject: Re: DBTags and scrollable result sets
>
> This might be addressed with a few new attributes:
>
> elementsPerPage - the number of rows to display per page
> pageNumberParam - the name of the parameter with the current page number
>
> elementsPerPage would be 10 in this case, and pageNumber would start at 1 by
> default. You would need some kind of linkage for the user to specify
> another
> page. Perhaps a separate tag for this, a navigation bar tag. The nav bar
> would print links to other pages of the result set. When the user clicked
> on
> one of these links, the pageNumber would be updated. The next visit to the
> statement tag would execute the same query again. Within the resultSet tag,
> if a pageNumber parameter were present, use it to determine which page to
> seek
> to. If a pageNumberParam were not present, then a default of 1 would be
> applied.
>
> <jdbc:connection id="conn1">
> <jdbc:url>jdbc:odbc:test</jdbc:url>
> <jdbc:driver>sun.jdbc.odbc.JdbcOdbcDriver</jdbc:driver>
> </jdbc:connection>
>
> <jdbc:statement id="stmt1" conn="conn1">
> <jdbc:query><%= query %></jdbc:query>
> <jdbc:resultSet id="myRS" loop="true" elementsPerPage="10"
> pageNumberParam="pgNum">
> <tr>
> <td><jdbc:getColumn position="3"/></td>
> <td><jdbc:getColumn position="1"/></td>
> </tr>
> </jdbc:resultSet>
> </jdbc:statement>
>
> <jdbc:navbar resultSet="myRS" pageNumberParam="pgNum">
> <a href="thisJspPage?pgNum=<%=previous%>">previous</a>
> <a href="thisJspPage?pgNum=<%=next%>">next</a>
> </jdbc:navbar>
>
> For example, if a request came in with pgNum=4 set, the jdbc:resultSet tag
> would seek to 0-based record: elementsPerPage * (pgNum-1). In this case,
> 10*(4-1) (=30) would be the first record to display. elementsPerPage
> iterations through the result set would occur starting from record 30 and
> ending with record 39.
>
> The navbar checks if myRs.isLast() to see if the end has been reached. If
> not, then a next value is calculated to be pgNum + 1. In this case, 5. A
> previous value is calculated as pgNum - 1 or 1 if pgNum <= 1.
>
> I hope this doesn't just confuse things.
>
> -Mark Howell
> mark at nullcraft.org
>
> "Ciot, Thierry" wrote:
> >
> > I would think it is a very useful feature. Right now I am looking at how
> to
> > display rows using a "paging" mechanism (that is, for example, 10 rows at
> a
> > time).
> >
> > How would you go about doing this with the current tag lib?
> >
> > With scrollable record set we could have something like:
> >
> > <jdbc:connection id="conn1">
> > <jdbc:url>jdbc:odbc:test</jdbc:url>
> > <jdbc:driver>sun.jdbc.odbc.JdbcOdbcDriver</jdbc:driver>
> > </jdbc:connection>
> >
> > <jdbc:statement id="stmt1" conn="conn1">
> > <jdbc:query><%= query %></jdbc:query>
> > <jdbc:resultSet id="myRS" loop="true" beginat="20" endat="30">
> > <tr>
> > <td><jdbc:getColumn position="3"/></td>
> > <td><jdbc:getColumn position="1"/></td>
> > </tr>
> > </jdbc:resultSet>
> > </jdbc:statement>
> >
> > What do you think?
> >
> > Thierry.
> >
> > -----Original Message-----
> > From: Morgan Delagrange [mailto:[EMAIL PROTECTED]]
> > Sent: Monday, July 23, 2001 12:05 AM
> > To: {[EMAIL PROTECTED]; [EMAIL PROTECTED]
> > Subject: Re: DBTags and scrollable result sets
> >
> > Ciot, Thierry wrote on 7/20/01 2:38 pm:
> >
> > >Hi,
> > >
> > >Is there any plan to add
> > >scrollable result sets support
> > >in DBTags?
> > >
> > >Thanks, Thierry.
> >
> > Nothing definite. :) That specific feature hasn't actually come up as of
> > yet, but it does sound like a good one.
> >
> > Morgan