View Full Version : ضفحه بندی سایت مثل "www.site.com/Default.aspx?page=2"
mahmood1000
چهارشنبه 06 مهر 1390, 14:02 عصر
سلام به همه دوستان و استاتید عزیز
من میخواستم برای سایتم یه قسمت دانلود بزارم. حجم اصلاعاتم زیاده و نمیشه تو یه صفحه همه رو بیارم.
حالا میخوام صفحه بندی بشه اطلاعاتم . با گرید میشه اینکارو کرد اما مشکلم اینجاست که وقتی کاربر میخواد بره صفحه دوم آدرس صفحه همون آدرس اوله. من میخوام وقتی کاربر میره صفحه دوم آدرس صفحه هم تغییر کنه مثلا اینطوری بهشه:
www.site.com/Default.aspx?page=2
یا وقتی این آدرس صفحه وارد میشه کاربر به صفحه دوم هدایت بشه.
یه طورایی مثل صفحه بندی همین سایت.
خیلی گشتم اما مطلب درستی پیدا نکردم.
ممنون میشم دوستان راهنمایی کنید.
fakhravari
چهارشنبه 06 مهر 1390, 16:17 عصر
با سلام
من خودم یک صفحه تیتر اخبار دارم که کاربران کلیک میکنند به صفحه کامل اخبار میرن == ادامه مطلب.
____________
شای من اشتباه میکنم این کاری که میگی Page= 2 , page = 3 صفحابه صورت static و داینامیک از دیتابیس نمیخونه .
__________________________________________________ ______________________________________________
دوستان کسی اطلاعاتی داره : شاید همون page2 همان next بعد 10 رکورد شاید یه جورایی توی این روش باشه.
Alfred188
چهارشنبه 06 مهر 1390, 17:28 عصر
سلام،
شما اول باید تصمیم بگیری که چطوری مطالبت رو صفحه بندی کنی ! بعد بر اساس اون یه الگوریتم منظم برای صفحه بندی بسازی و برنامه نویسیش کنی!
مثلا من تو سایت خودم (http://www.moe-bs.com) اومدم برای صفحه کتابخونه لیست کتاب ها رو 30 تایی تقسیم کردم یعنی وقتی تعدادشون به 30 رسید یه صفحه اضافه می شه ولی من برای این روش از Ajax و session استفاده کردم!
ولی شما اگه بخوای می تونی اینکارو با همون روشی که خودت گفتی هم انجام بدی!
موفق باشی
mmnoody2006
چهارشنبه 06 مهر 1390, 17:51 عصر
شما خودت بگو چند بار باید در این باره بحث بشه ؟؟؟؟؟؟؟ :متفکر:
تو گوگل سرچ کن ==== asp.net custom data paging
محمد متاله
چهارشنبه 06 مهر 1390, 18:14 عصر
اگه می خواهید از تکنیک QueryString استفاده کنید مثلا یک صفحه با یک آدرس اما با اطلاعات اضافی در نام آدرس مثل
www.mySiite.com/Default.aspx?pid=728
پس از نام صفحه تان علامت سوال و سپس یک متغیر برای اشاره به مقدار مورد نظر و سپس مقدار مورد نظرتان را با تساوی به آن اختصاص دهید
در Page_Load مقدار را به صورت
string pid = Page.Request.QueryString["pid"];
بخوانید
اگر هم چندین متغیر دارید با علامت & از هم جدا کنید مانند
www.mySite.com/Default.aspx?pid=gallery&paction=login
mahmood1000
چهارشنبه 06 مهر 1390, 18:15 عصر
با سلام
من خودم یک صفحه تیتر اخبار دارم که کاربران کلیک میکنند به صفحه کامل اخبار میرن == ادامه مطلب.
____________
شای من اشتباه میکنم این کاری که میگی Page= 2 , page = 3 صفحابه صورت static و داینامیک از دیتابیس نمیخونه .
__________________________________________________ ______________________________________________
دوستان کسی اطلاعاتی داره : شاید همون page2 همان next بعد 10 رکورد شاید یه جورایی توی این روش باشه.
سلام،
شما اول باید تصمیم بگیری که چطوری مطالبت رو صفحه بندی کنی ! بعد بر اساس اون یه الگوریتم منظم برای صفحه بندی بسازی و برنامه نویسیش کنی!
مثلا من تو سایت خودم (http://www.moe-bs.com) اومدم برای صفحه کتابخونه لیست کتاب ها رو 30 تایی تقسیم کردم یعنی وقتی تعدادشون به 30 رسید یه صفحه اضافه می شه ولی من برای این روش از Ajax و session استفاده کردم!
ولی شما اگه بخوای می تونی اینکارو با همون روشی که خودت گفتی هم انجام بدی!
موفق باشی
دوستان عزیز این چیزی که من از نوشته های شما متوجه شدم با اینی که من میخوام کاملا متفاوته.
من میخوام با استفاده از QueryString این کار انجام بشه. مثل صفحه بندی همین سایت.
الان مشکلی که دارم اینه که چطوری این نورا رو ایجاد کنم
75956
و هنگامی که کاربر به صفحه هات بعدی میری آدرس صفحه من هم تغییر کنه و به این شکل دربیاد.
75959
mahmood1000
چهارشنبه 06 مهر 1390, 18:20 عصر
دوست عزیز میشه بیشتر توضیح بدی؟
این نوار رو چطوری ایجاد کنم؟
75960
به این نوار چطور دستور بدم که این کوئری رو ایجاد کنه؟
Alfred188
چهارشنبه 06 مهر 1390, 19:34 عصر
خوب منم همينو ميگم! شما مي خوايد يه سري موضوع رو طبقه بندي كني و هر يه تعداد خاص رو صفحه بندي كني كه با يه سري اعدادي كه اون پايين يا بالا قرار مي گيره بهشون دسترسي پيدا كني! درست؟!
يه چي مثل مثال زير مي خواي درسته؟
75963
خوب گفتم بايد خودت يه الگوريتم براش بسازي! اگه تونستم امشب يه نمونه كد برات مي سازم!
mahmood1000
چهارشنبه 06 مهر 1390, 19:41 عصر
دوستان من خودم راهشو پیدا کردم
این نمونه کد VB این چیزیه که منظورم بود.
کسایی که دنبال این کد میگشتن میتونن ازش استفاده کنن
Partial Class _Default
Inherits System.Web.UI.Page
Private Const NEXT_PREVIOUS_CLASS As String = “nextprev”
Private Const CURRENT_CLASS As String = “current”
Private Const PREVIOUS_TEXT As String = “« Previous”
Private Const NEXT_TEXT As String = “Next »”
Dim AllowMultiColumnSorting As Boolean = True
Dim sortExpression As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Me.CurrentPage > 0 Then
Me.Gridview1.PageIndex = Me.CurrentPage – 1
Else
Me.Gridview1.PageIndex = 0
End If
End Sub
#Region “Paging Procedures”
Private ReadOnly Property CurrentPage() As Integer
Get
Dim thispage As Integer
If Not IsNothing(thispage) Then
thispage = Convert.ToInt32(Request.QueryString(“Page”))
If thispage = 0 Then
thispage += 1
End If
End If
Return thispage
End Get
End Property
Protected Sub Gridview1_DataBound(ByVal sender As Object, ByVal e As EventArgs)
Dim container As Panel = DirectCast(Gridview1.BottomPagerRow.FindControl( pagingContainer”), Panel)
container.Controls.Add(GetPreviousControl())
Me.AddMainPaging(container)
container.Controls.Add(GetNextControl())
End Sub
Private Sub AddMainPaging(ByVal container As Panel)
‘ the number of pages to display
‘ around the currently selected page
Dim adjacents As Integer = 3
‘ don’t need to break it up
If Gridview1.PageCount Me.CurrentPage AndAlso Me.CurrentPage > (adjacents * 2) Then
‘ hide on both sides
Me.AddFirstTwo(container)
Me.AddRange(Me.CurrentPage – adjacents, Me.CurrentPage + adjacents, container)
Me.AddLastTwo(container)
Else
‘ hide just the beginning
Me.AddFirstTwo(container)
Me.AddRange(Gridview1.PageCount – (2 + (adjacents * 2)), Gridview1.PageCount, container)
End If
End If
End Sub
Private Sub AddDots(ByVal container As Panel)
Dim dots As New Label()
dots.Text = “….”
container.Controls.Add(dots)
End Sub
Private Sub AddFirstTwo(ByVal container As Panel)
Me.AddRange(1, 2, container)
Me.AddDots(container)
End Sub
Private Sub AddLastTwo(ByVal container As Panel)
Me.AddDots(container)
Me.AddRange(Me.Gridview1.PageCount – 1, Me.Gridview1.PageCount, container)
End Sub
Private Sub AddRange(ByVal startIndex As Integer, ByVal endIndex As Integer, ByVal container As Panel)
For i As Integer = startIndex To endIndex
container.Controls.Add(Me.GetMainControl(i))
Next
End Sub
Private Function GetMainControl(ByVal currentIndex As Integer) As Control
If Gridview1.PageIndex + 1 = currentIndex Then
Return GetLabel(currentIndex.ToString(), CURRENT_CLASS)
Else
Return GetHyperLink(currentIndex.ToString(), Nothing, String.Format(“~/Default.aspx?Page={0}”, currentIndex))
End If
End Function
Private Function GetPreviousControl() As Control
If Me.Gridview1.PageIndex
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.