PDA

View Full Version : مشکل در صفحه بندی رکوردها



jannati
چهارشنبه 17 تیر 1383, 15:25 عصر
دوستان سلام
من یک صفحه aspدارم که میخوام توی اون رکوردهام 20تا20تا نمایش داده بشه.از متغییرهای currentpageوpagesizeوpagecountاستفاده میکنم.اما نمیدونم چرا pagecountهمیشه مساوی با 1- است.به خاطر همین کدم اصلا کار نمی کنه.اول برنامه را اینطوری نوشتم:



<!-- #include file="adovbs.inc" -->
<%

Response.Write (m)
if Request.QueryString("move")="next" then
session("currentpage")=session("currentpage")+1
end if
if Request.QueryString("move")="pre" then
session("currentpage")=session("currentpage")-1
end if
if Request.QueryString("move")=" " then
session("currentpage")=1
end if
'Response.Write (prodset.PageCount )
%>

بعد در whileهم اینطوری صدا زدم:


while not prodSet.EOF and numrows<prodset.PageSize

البته pagesize را هم 20دادم.
و نهایتا در قسمت صدا زدن صفحه بعدی کد زیر رو گذاشتم:


<%if session("currentpage")<prodset.PageCount then%>
<p align="left"><a href="print.asp?move=next">next</a></p>
<%end if%>

با این وجود رکوردها را 20تا20 تا نشون میده .ولی دکمهnextفعال نیست.به نظر شما مشکل چیه؟ :roll: :? :?

Abbas Arizi
چهارشنبه 17 تیر 1383, 21:14 عصر
به نظر من به جای این که از Session استفاده کنید بهتره با روش دیگه‌ای شماره صفحه رو به دست بیارید مثلا اون رو مستقیم توی QueryString قرار بدید
برای صفحه‌بندی رکوردست هم از این الگو (http://www.flws.com.au/showusyourcode/codeLib/code/rstPaging.asp?catID=3) پیروی کنید

jannati
شنبه 20 تیر 1383, 07:55 صبح
دوست عزیز از پاسختون ممنون
اما مشکل من اینه که اصلا pagecountرا همیشه (1-)نشان میدهد و وقتی خط prodset.AbsolutePage =5را اضافه میکنم خطای زیر را میدهد:


Error Type:
ADODB.Recordset (0x800A0CB3)
Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype.


البته این را هم اضافه میکنم که پایگاهم را اینطوری باز کرده ام:


prodSet.Open "select * from order_items " _
& "where order_id="& p_order_id, _
outpostDB, adOpenDynamic, adLockPessimistic, adCmdText

حالا باید چیکار کنم؟چون pagecountهمیشه (1-)است اصلا وارد حلقه whileنمی شود؟ :( :cry: :?

jannati
شنبه 20 تیر 1383, 08:07 صبح
واقعا ممنونم
مشکل در نوع بازکردن رکوردست بود. (:D)
حالا مشکلم اینجاست که وقتیnextرو میزنم همون رکوردهای صفحه اول را نشان میدهد.یعنی همان 20تای اولی را .به نظر شما مشکل چیه؟ :roll:

tayebeh
چهارشنبه 28 مرداد 1383, 07:45 صبح
من فکرکنم شما رکوردست رو refresh نمیکنید یا اینکه در انتها اون رو close و سپس set nothing نمیکنید.
بای

hoom
سه شنبه 03 شهریور 1383, 22:51 عصر
سلام

من یه برنامه اینطوری خیلی وقت پیشها نوشته بودم که اینجا براتون میذارمش خیلی هم درست کار میکنه



im intCurrPage, intTotalPages
Const intRecPerPage = 20

If Request.QueryString("CurrPage") = "" then
intCurrPage = 1
Else
intCurrPage = CInt(Request.QueryString("CurrPage"))
End If

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "Provider=Microsoft.jet.OLEDB.3.51;" & _
"Data Source = E:\test.mdb"
objConn.Open

Set RecSet = Server.CreateObject("ADODB.Recordset")

RecSet.CursorLocation = adUseClient
RecSet.CursorType = adOpenStatic

RecSet.CacheSize = intRecPerPage
RecSet.Open "Select * From myTable"

If Not RecSet.Eof Then
RecSet.MoveFirst
RecSet.PageSize = intRecPerPage

intTotalPages = CInt(RecSet.PageCount)
If intCurrPage >= intTotalPages Then intCurrPage = intTotalPages
If intCurrPage <= 0 Then intCurrPage = 1

RecSet.AbsolutePage = intCurrPage
Else
intCurrPage = 0
End If



<%If CInt(intCurrPage) > 1 Then%>
<a Name="FirstPageButton" href="default.asp?CurrPage=<%=CStr(1)%>">First Page</a> 
<a Name="PrevPageButton" href="default.asp?CurrPage=<%=CStr(intCurrPage - 1)%>">Previouse Page</a> 
<%End If%>

Page <B><%=CStr(intCurrPage)%></B> Of <B><%=CStr(intTotalPages)%></B>  

<%If CInt(intCurrPage) <> CInt(intTotalPages) Then%>
<a Name="NextPageButton" href="default.asp?CurrPage=<%=CStr(intCurrPage + 1)%>">Next Page</a> 
<a Name="LastPageButton" href="default.asp?CurrPage=<%=CStr(intTotalPages)%>">Last Page</a>
<%End If%>


ارادتمند