لود كردن 20 تا 20 تاي ركوردها در صفحات ASP

bono056

Member
فرض كنيد ميخوايم محتويات يه جدول SQL رو 20 تا 20 تا تو صفحات asp نشون بديم. وقتي محتوياتو SELECT ميكنيم و تو يه Recordset ميريزيم همه جدول مياد تو Recordset و قاعدتا تو حافظه.(درست ميگم؟).
خب وقتي اطلاعات جدول خيلي زياد بشه اين مشكل ساز ميشه.
جيكار بايد كرد كه فقط 20 تايي كه ميخوايم نمايش بديم بياد تو Recordset؟
مثلا 20 تايه صفحه 5ام. كه ميشه ركوردهاي 80 تا 100.
 

omidak

Active Member
سلام:
برايه اين كار از كد زير استفاده كنيد :wink: :

کد:
Create PROCEDURE Post_Read
	(
		@PageSize int = 20,
		@PageIndex int = 0
	)
As
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize + 1
	CREATE TABLE #PageIndex 
	(
		IndexID int IDENTITY (1, 1) NOT NULL,
		ID int,
		CreatedOn datetime
	)
	Begin
		INSERT INTO #PageIndex(ID, CreatedOn)

		SELECT ID, CreatedOn From MyTable Order By CreatedOn
			
		Select
			P.ID, myText, P.CreatedOn
		From
			MyTable P (nolock),
			#PageIndex PageIndex
		WHERE 
			P.ID = PageIndex.ID AND
			PageIndex.IndexID > @PageLowerBound AND
			PageIndex.IndexID < @PageUpperBound
		ORDER BY 
			PageIndex.IndexID
	End
 

Elfin-D

Member
من هم يه سوال تقريبا اين جوري داشم
مثلا 63 تا ركورد رو سلكت كرده از اكسس به مي خام 20 فشغث اول رو نشون بهد بقيه رو پايين صفحه شماره بزنه (1 تا اونجايي كه ركوردها در صفحات 20 تايي تمو ميشه )به با كليك رو ي هر كدو مثلا روي 3 20 تاي سوم رو نشون بده بعد چون ركوردها 63 تاست
3 فشغث تاي بعدي رو تو صفحه بعد نشون بده (چي شد خودمم گيج شدم) آقا مثل سرچ گوگل تقريبا
 

Elfin-D

Member
آقا اين كار نمي كنه شايدم مشكل از منه لطف ميكنين اگه مدل ساده تري هم هست بگين؟
 

omidak

Active Member
سلام:
من راه ديگه اي به نظرام نميرسه. اما تويه DataAdapter ای که در .Net هست این کار رو میکنه.
از .Net استفاده میکنید؟
 

hoom

Active Member
سلام

میتونین از این کد استفاده کنید. فرض بر اینه که صفحه شما default.asp هستش.

کد:
Dim 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%>

ارادتمند
 

Elfin-D

Member
خيلي ممنون هومب جان با كمي تغيير درست شد حالا اگه بخوام به تعداد صفحه هام عدد بزارم يعني از 1 تا آخرين صفحه عدد با شه و ديگه next page و... نباشه و روي اين عددها كليك كنيم بايد چه كنم؟
 

omidak

Active Member
سلام:
تعداد كل رو با Count(*) بگیرید بعد تقصیم بر Page Size بکیند و Ceiling اون میشه تعداد کل صفحه ها. حال هر صفحه رو که خواستید میتونید فراخوانی کنید.
 

hoom

Active Member
خب کاری نداره، این قسمت رو
کد:
      <%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%>

اینطوری بنویس

کد:
<%For I = 1 To CInt(intTotalPages)%>
  <a Name="PageButton<%=CStr(I)%>" href="default.asp?CurrPage=<%=CStr(I)%>"><%=CStr(I)%></a> 
<%Next%>

ارادتمند
 

جدیدترین ارسال ها

بالا