PDA

View Full Version : نمایش لینک تعداد صفحات در Paging با Repeater



Chabok
یک شنبه 17 مهر 1384, 17:06 عصر
با عرض سلام خدمت اساتید محترم

من اطلاعات رو به روشی که آقای راد گفتند صفحه بندی کرده ام
http://www.barnamenevis.org/forum/showthread.php?t=24218
از ایشون هم کمال تشکر را دارم:تشویق:

ولی نمیدونم چجوری لینک تعداد صفحات رو اضافه کنم
مثلا : 1 2 3 4 5

لطفا نظر بدین بهترین راه و استاندارد ترین راه چیست ؟

از همگی ممنونم

Behrouz_Rad
یک شنبه 17 مهر 1384, 18:13 عصر
در پایین همان مقاله نوشته ام:

می توان قالب Paging را با اندکی تغییر در کد فوق به گونه ای تغییر داد که به تعداد صفحات، بر روی وب فرم لینک قرار بگیرد. (نمونه ای شبیه به آنچه که در این سایت وجود دارد)
بدین منظور می باید تعداد کل رکوردها را با استفاده از روشی همانند دستور اس کیو ال Count به دست آورد و با تقسیم عدد به دست آمده بر تعداد دلخواه نمایش رکوردها در هر صفحه (همانند آنچه که در مقدار دهی به خاصیت PageSize کلاس PagedDataSouce مشخص کرده اید)، تعداد لینک ها را به دست آورده و بر مبنای آن تعداد، کنترل HyperLink به وب فرم اضافه کنید و ...)

Chabok
دوشنبه 18 مهر 1384, 14:15 عصر
کنترل HyperLink به وب فرم اضافه کنید و ...

آقای راد من تو همین یه تیکش گیرم
ممنون میشم راهنمایی کنید که بهترین و ساده ترین راه برای اضافه کردن این لینک ها چیست ؟

Behrouz_Rad
دوشنبه 18 مهر 1384, 14:27 عصر
در یک حلقه ی For، از تگ A هم می تونید استفاده کنید.
احتمالا با اضافه کردن کنترل ها به صورت پویا مشکل دارید.
ساده ست!
یک متغیر از نوع کنترل Hyperlink تعریف کنید.
با نسب دادن یک ID به آن و سپس ایجاد یک PlaceHolder و استفاده از متد Add خاصیت Controls این کنترل، Hyperlink را به فرم اضافه کنید.
موفق باشید.

Chabok
سه شنبه 19 مهر 1384, 16:11 عصر
از شما ممنونم . منم هیمنو می خواستم . می خواستم بدونم باید با PlaceHolder کار کرد یا راه دیگر و بهتری هم
وجود دارد یا نه ؟ همین . ممنونم

Behrouz_Rad
سه شنبه 19 مهر 1384, 16:40 عصر
به هر حال هر کنترلی که به صورت پویا ایجاد می شود، باید به کنترلی دیگر اضافه شود.
بهترین کنترل برای اینکار، کنترل PlaceHolder است که به همین منظور ایجاد شده است.
بهتر است که که از تگ A استفاده کنید.
موفق باشید.

Chabok
پنج شنبه 21 مهر 1384, 14:21 عصر
مگه تو PlaceHolder کنترل نمی ذاریم ؟
پس تگ A دیگه کجا بود ؟
یه توضیحی بدین . ممنون

Behrouz_Rad
پنج شنبه 21 مهر 1384, 18:18 عصر
عرض کردم یا از کنترل Hyperlink استفاده کنید و یا از تگ A

rohollahmahmoodiany
یک شنبه 24 مهر 1384, 00:55 صبح
با سلام
فرض کنید که ما به روش گفته شده شماره ها را نمایش دادیم.در ضمن ما query را طوری نوشته ایم که در هر دفعه تعداد محدودی record بیاورد.حالا رسیدهایم به صفحه 5 درضمن دیتا ست هم تمام شده است و باید دوباره با record های بعدی fill شود .حالا کاربر انتظار دارد وقتی که روی 5 کلیک کند6و7و8و.. نیز ظاهر شوند .
سوال:
با چه eventی دیتا بیس باید دوباره load شودو...
با تشکر از اقای رادو سایر دوستان.

eshaghi
دوشنبه 24 مهر 1385, 11:04 صبح
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
mb = Request.QueryString("name")

'== CREATE PAGING BUTTONS ==

'-- Load array ItemNumberList with item numbers
Dim ItemNumberList = New ArrayList
DBConnection = New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=d:\db2.mdb")
DBConnection.Open()
SQLString = "SELECT isbn FROM t1 where name=@name ORDER BY isbnno "
DBCommand = New OleDbCommand(SQLString, DBConnection)
DBCommand.Parameters.Add("@name", mb)
DBReader = DBCommand.ExecuteReader()
While DBReader.Read()
ItemNumberList.Add(DBReader("isbnno"))
End While
DBReader.Close()
DBConnection.Close()
ItemNumberList.TrimToSize()

'-- Create Paging Buttons
Dim StartIndex = 0
Dim EndIndex As Integer
Dim StartKey As String
Dim EndKey As String
Dim i As Integer

PageButtons.Controls.Clear()
For i = 1 To Math.Ceiling(ItemNumberList.Count / PageSize)

EndIndex = StartIndex + PageSize - 1
If EndIndex > ItemNumberList.Count - 1 Then
EndIndex = ItemNumberList.Count - 1
End If

StartKey = ItemNumberList(StartIndex)
EndKey = ItemNumberList(EndIndex)

Dim PageButton As Button
PageButton = New Button
PageButton.Text = i
PageButton.ID = "P" & i
PageButton.CommandName = StartKey & "|" & EndKey
PageButton.Style("width") = "20px"
PageButton.Style("background-color") = "#F0F0F0"
AddHandler PageButton.Command, AddressOf GetPage
PageButtons.Controls.Add(PageButton)

StartIndex += PageSize

Next

'== CREATE ARRAYLIST FOR BINDING ITEM TYPES ==

' ItemTypes = New ArrayList
' DBConnection = New OleDbConnection( _
' "Provider=Microsoft.Jet.OLEDB.4.0;" & _
' "Data Source=d:\eCommerce\Databases\eCommerce.mdb")
' DBConnection.Open()
' SQLString = "SELECT DISTINCT ItemType FROM Products ORDER BY ItemType"
' DBCommand = New OleDbCommand(SQLString, DBConnection)
' DBReader = DBCommand.ExecuteReader()
' While DBReader.Read()
' ItemTypes.Add(DBReader("ItemType"))
' End While
' DBReader.Close()
' DBConnection.Close()

If Not Page.IsPostBack Or ViewState("Updated") = True Then

'== BIND INITIAL REPEATER ==

DBConnection = New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=d:\db2.mdb")
DBConnection.Open()
SQLString = "SELECT TOP " & PageSize & " * FROM t1 where name=@name ORDER BY isbnno"
DBCommand = New OleDbCommand(SQLString, DBConnection)
DBCommand.Parameters.Add("@name", mb)
DBReader = DBCommand.ExecuteReader()
Repeaterdisplay.DataSource = DBReader
Repeaterdisplay.DataBind()
DBReader.Close()
DBConnection.Close()

Dim FirstButton As Button
FirstButton = CType(PageButtons.FindControl("P1"), Button)
FirstButton.Style("background-color") = "#990000"
FirstButton.Style("color") = "#FFFFFF"

ViewState("Updated") = False

End If

'Put user code to initialize the page here
End Sub
Sub GetPage(ByVal Src As Object, ByVal Args As CommandEventArgs)

Dim Keys() As String
Keys = Split(Args.CommandName, "|")

DBConnection = New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=d:\db2.mdb")
DBConnection.Open()
SQLString = "SELECT * FROM t1 WHERE " & _
"isbn >= '" & Keys(0) & "' AND " & _
"isbn <= '" & Keys(1) & "' " & _
"and name=@name " & _
"ORDER BY isbnno"
DBCommand = New OleDbCommand(SQLString, DBConnection)
DBCommand.Parameters.Add("@name", mb)
DBReader = DBCommand.ExecuteReader()
RepeaterDisplay.DataSource = DBReader
RepeaterDisplay.DataBind()
DBReader.Close()
DBConnection.Close()

'-- Highlight clicked button
Dim Item As Button
Dim ThisButton As Button
For Each Item In PageButtons.Controls
ThisButton = CType(Item, Button)
ThisButton.Style("background-color") = "#F0F0F0"
ThisButton.Style("color") = "#000000"
Next
ThisButton = CType(PageButtons.FindControl(Src.id), Button)
ThisButton.Style("background-color") = "#990000"
ThisButton.Style("color") = "#FFFFFF"

End Sub
nameیک پارامتر ورودی است و isbnno یک شمارنده اتوماتیک است و isbn یک فیلد است