Forums

This topic is locked

Horizontal Loop/Recordset Paging Question

Posted 07 Oct 2004 00:13:52
1
has voted
07 Oct 2004 00:13:52 Katherine Williams posted:
I have a page that uses the Horizontal Loop SB with the Recordset Paging SB via the Horizontal Loop Suite, but I'm having a slight problem. I want to to page every 10 records, but it's only going up by one record on each "<<Previous" or "Next>". I'm sure that I just have some value set to "1" when it should be set to "10", but I can't see where it is. If anyone can let me know what I'm doing wrong with my code (included below in 4 "steps", it would be greatly appreciated. Thanks.

KWilliams

<%
// ***STEP 1: RECORDSET
%>
<%@LANGUAGE="JAVASCRIPT"%>
<!--#include virtual="/Connections/strConn_Bulletin.asp" -->
<%
Session("Cat_ID" = String(Request.QueryString("Cat_ID");
%>
<%
var rsBulletinBoard__MMColParam = "BB.Cat_ID";
if (String(Session("Cat_ID") != "undefined" &&
String(Session("Cat_ID") != "" {//Then
rsBulletinBoard__MMColParam = String(Session("Cat_ID");
}//End if
%>
<%
var rsBulletinBoard = Server.CreateObject("ADODB.Recordset";
rsBulletinBoard.ActiveConnection = MM_strConn_Bulletin_STRING;
rsBulletinBoard.Source = "SELECT BB.Topic, BB.DateTime, ME.FName, ME.LName, BB.Cat_ID, ME.Email, BB.Post_ID, BB.Member_ID, ME.Member_ID AS Expr1, (SELECT COUNT(*) FROM dbo.Replies AS RE WHERE BB.Post_ID = RE.Post_ID) AS Replies FROM dbo.BulletinBoard BB INNER JOIN dbo.Members ME ON BB.Member_ID = ME.Member_ID WHERE BB.Cat_ID = "+ rsBulletinBoard__MMColParam.replace(/'/g, "''" + " AND Topic NOT LIKE '%Sticky%' ORDER BY BB.DateTime DESC";
rsBulletinBoard.CursorType = 0;
rsBulletinBoard.CursorLocation = 2;
rsBulletinBoard.LockType = 1;
rsBulletinBoard.Open();
var rsBulletinBoard_numRows = 0;
%>

<%
// ***STEP 2: RECORDSET PAGING CODE
%>
<%
// *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

// set the record count
var rsBulletinBoard_total = rsBulletinBoard.RecordCount;

// set the number of rows displayed on this page
if (rsBulletinBoard_numRows < 0) { // if repeat region set to all records
rsBulletinBoard_numRows = rsBulletinBoard_total;
} else if (rsBulletinBoard_numRows == 0) { // if no repeat regions
rsBulletinBoard_numRows = 1;
}

// set the first and last displayed record
var rsBulletinBoard_first = 1;
var rsBulletinBoard_last = rsBulletinBoard_first + rsBulletinBoard_numRows - 1;

// if we have the correct record count, check the other stats
if (rsBulletinBoard_total != -1) {
rsBulletinBoard_numRows = Math.min(rsBulletinBoard_numRows, rsBulletinBoard_total);
rsBulletinBoard_first = Math.min(rsBulletinBoard_first, rsBulletinBoard_total);
rsBulletinBoard_last = Math.min(rsBulletinBoard_last, rsBulletinBoard_total);
}
%>
<%
// *** Recordset Stats: if we don't know the record count, manually count them

if (rsBulletinBoard_total == -1) {

// count the total records by iterating through the recordset
for (rsBulletinBoard_total=0; !rsBulletinBoard.EOF; rsBulletinBoard.MoveNext()) {
rsBulletinBoard_total++;
}

// reset the cursor to the beginning
if (rsBulletinBoard.CursorType > 0) {
if (!rsBulletinBoard.BOF) rsBulletinBoard.MoveFirst();
} else {
rsBulletinBoard.Requery();
}

// set the number of rows displayed on this page
if (rsBulletinBoard_numRows < 0 || rsBulletinBoard_numRows > rsBulletinBoard_total) {
rsBulletinBoard_numRows = rsBulletinBoard_total;
}

// set the first and last displayed record
rsBulletinBoard_last = Math.min(rsBulletinBoard_first + rsBulletinBoard_numRows - 1, rsBulletinBoard_total);
rsBulletinBoard_first = Math.min(rsBulletinBoard_first, rsBulletinBoard_total);
}
%>
<% var MM_paramName = ""; %>
<%
// *** Move To Record and Go To Record: declare variables

var MM_rs = rsBulletinBoard;
var MM_rsCount = rsBulletinBoard_total;
var MM_size = rsBulletinBoard_numRows;
var MM_uniqueCol = "";
MM_paramName = "";
var MM_offset = 0;
var MM_atTotal = false;
var MM_paramIsDefined = (MM_paramName != "" && String(Request(MM_paramName)) != "undefined";
%>
<%
// *** Move To Record: handle 'index' or 'offset' parameter

if (!MM_paramIsDefined && MM_rsCount != 0) {

// use index parameter if defined, otherwise use offset parameter
r = String(Request("index");
if (r == "undefined" r = String(Request("offset");
if (r && r != "undefined" MM_offset = parseInt(r);

// if we have a record count, check if we are past the end of the recordset
if (MM_rsCount != -1) {
if (MM_offset >= MM_rsCount || MM_offset == -1) { // past end or move last
if ((MM_rsCount % MM_size) != 0) { // last page not a full repeat region
MM_offset = MM_rsCount - (MM_rsCount % MM_size);
} else {
MM_offset = MM_rsCount - MM_size;
}
}
}

// move the cursor to the selected record
for (var i=0; !MM_rs.EOF && (i < MM_offset || MM_offset == -1); i++) {
MM_rs.MoveNext();
}
if (MM_rs.EOF) MM_offset = i; // set MM_offset to the last possible record
}
%>
<%
// *** Move To Record: if we dont know the record count, check the display range

if (MM_rsCount == -1) {

// walk to the end of the display range for this page
for (var i=MM_offset; !MM_rs.EOF && (MM_size < 0 || i < MM_offset + MM_size); i++) {
MM_rs.MoveNext();
}

// if we walked off the end of the recordset, set MM_rsCount and MM_size
if (MM_rs.EOF) {
MM_rsCount = i;
if (MM_size < 0 || MM_size > MM_rsCount) MM_size = MM_rsCount;
}

// if we walked off the end, set the offset based on page size
if (MM_rs.EOF && !MM_paramIsDefined) {
if ((MM_rsCount % MM_size) != 0) { // last page not a full repeat region
MM_offset = MM_rsCount - (MM_rsCount % MM_size);
} else {
MM_offset = MM_rsCount - MM_size;
}
}

// reset the cursor to the beginning
if (MM_rs.CursorType > 0) {
if (!MM_rs.BOF) MM_rs.MoveFirst();
} else {
MM_rs.Requery();
}

// move the cursor to the selected record
for (var i=0; !MM_rs.EOF && i < MM_offset; i++) {
MM_rs.MoveNext();
}
}
%>
<%
// *** Move To Record: update recordset stats

// set the first and last displayed record
rsBulletinBoard_first = MM_offset + 1;
rsBulletinBoard_last = MM_offset + MM_size;
if (MM_rsCount != -1) {
rsBulletinBoard_first = Math.min(rsBulletinBoard_first, MM_rsCount);
rsBulletinBoard_last = Math.min(rsBulletinBoard_last, MM_rsCount);
}

// set the boolean used by hide region to check if we are on the last record
MM_atTotal = (MM_rsCount != -1 && MM_offset + MM_size >= MM_rsCount);
%>
<%
// *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

// create the list of parameters which should not be maintained
var MM_removeList = "&index=";
if (MM_paramName != "" MM_removeList += "&" + MM_paramName.toLowerCase() + "=";
var MM_keepURL="",MM_keepForm="",MM_keepBoth="",MM_keepNone="";

// add the URL parameters to the MM_keepURL string
for (var items=new Enumerator(Request.QueryString); !items.atEnd(); items.moveNext()) {
var nextItem = "&" + items.item().toLowerCase() + "=";
if (MM_removeList.indexOf(nextItem) == -1) {
MM_keepURL += "&" + items.item() + "=" + Server.URLencode(Request.QueryString(items.item()));
}
}

// add the Form variables to the MM_keepForm string
for (var items=new Enumerator(Request.Form); !items.atEnd(); items.moveNext()) {
var nextItem = "&" + items.item().toLowerCase() + "=";
if (MM_removeList.indexOf(nextItem) == -1) {
MM_keepForm += "&" + items.item() + "=" + Server.URLencode(Request.Form(items.item()));
}
}

// create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL + MM_keepForm;
if (MM_keepBoth.length > 0) MM_keepBoth = MM_keepBoth.substring(1);
if (MM_keepURL.length > 0) MM_keepURL = MM_keepURL.substring(1);
if (MM_keepForm.length > 0) MM_keepForm = MM_keepForm.substring(1);
%>
<%
// *** Move To Record: set the strings for the first, last, next, and previous links

var MM_moveFirst="",MM_moveLast="",MM_moveNext="",MM_movePrev="";
var MM_keepMove = MM_keepBoth; // keep both Form and URL parameters for moves
var MM_moveParam = "index";

// if the page has a repeated region, remove 'offset' from the maintained parameters
if (MM_size > 1) {
MM_moveParam = "offset";
if (MM_keepMove.length > 0) {
params = MM_keepMove.split("&";
MM_keepMove = "";
for (var i=0; i < params.length; i++) {
var nextItem = params[i].substring(0,params[i].indexOf("=");
if (nextItem.toLowerCase() != MM_moveParam) {
MM_keepMove += "&" + params[i];
}
}
if (MM_keepMove.length > 0) MM_keepMove = MM_keepMove.substring(1);
}
}

// set the strings for the move to links
if (MM_keepMove.length > 0) MM_keepMove = Server.HTMLEncode(MM_keepMove) + "&";
var urlStr = Request.ServerVariables("URL" + "?" + MM_keepMove + MM_moveParam + "=";
MM_moveFirst = urlStr + "0";
MM_moveLast = urlStr + "-1";
MM_moveNext = urlStr + (MM_offset + MM_size);
MM_movePrev = urlStr + Math.max(MM_offset - MM_size,0);
%>

<%
// ***STEP 3: HORIZONTAL LOOP CODE
%>
<%
var HLooper1__numRows = 10;
var HLooper1__index = 0;
rsBulletinBoard_numRows += HLooper1__numRows;
%>

<html>
<head>
</head>
<body>
<table width="100%" border="0" bgcolor="#FFFFCC">
<%
var startrw=0;
var endrw=HLooper1__index;
var numberColumns=1;
var numrows=10;
while((numrows-- !=0) && (!rsBulletinBoard.EOF)) {
startrw=endrw + 1;
endrw = endrw + numberColumns;
%>
<tr valign="top" bgcolor="#FFFFCC">
<%
while ((startrw <= endrw) && (!rsBulletinBoard.EOF)) {
%>
<td><a href="topic.asp?Cat_ID=<%=(rsBulletinBoard.Fields.Item("Cat_ID".Value)%>&Post_ID=<%=(rsBulletinBoard.Fields.Item("Post_ID".Value)%>"><%=(rsBulletinBoard.Fields.Item("Topic".Value)%></a></td>
<td><div align="center" class="style1">
<%=(rsBulletinBoard.Fields.Item("Replies".Value)%> </div></td>
<td><div align="center" class="style1"><%=(rsBulletinBoard.Fields.Item("DateTime".Value)%></div></td>
<td><div align="center" class="style1"><a class="small" href="dgintrasrv1/BulletinBoard/profile.asp?Member_ID=<%=(rsBulletinBoard.Fields.Item("Member_ID".Value)%>"><%=(rsBulletinBoard.Fields.Item("FName".Value)%> <%=(rsBulletinBoard.Fields.Item("LName".Value)%></a></div></td>
<%
startrw = startrw+1;
rsBulletinBoard.MoveNext();
}
%>
</tr>
<tr valign="top" bgcolor="#FFFFCC">
<td colspan="4" bgcolor="#9999FF" class="small"><img src="Images/spacer.gif" width="1" height="1"></td>
</tr>
<%}//End if%>
</table>
</body>
</html>

Reply to this topic