PDA

View Full Version : صفحه بندی datalist



dena
شنبه 15 اسفند 1383, 02:03 صبح
آیا می شود data list را page بندی کرد. یا تعیین کرد چند تا رکورد را نمایش دهد.

Behrouz_Rad
شنبه 15 اسفند 1383, 07:13 صبح
Form level variables


Const pagesize As Integer = 3
Dim pagecount As Integer

Create a sub to calculate total pages


Public Sub SetTotalPages()
If viewstate("pagecount") Is Nothing Then
Dim cnn As New
SqlConnection(Global.GetConnectionString)

Dim cmd As SqlCommand =
New SqlCommand("SELECT Count(*) FROM MyTable", cnn)
cnn.Open()
Dim reccount As Integer =
cmd.ExecuteScalar().ToString()

If reccount Mod pagesize = 0 Then
pagecount = reccount / pagesize
Else
pagecount = CInt(reccount / pagesize) + 1
End If
viewstate("pagecount") = pagecount
cnn.Close()
Else
pagecount = viewstate("pagecount")
End If
End Sub

Write a sub to bind the DataList


Public Sub Bindgrid(ByVal pageno As Integer)
Dim cnn As New SqlConnection("connstr")
Dim startrec As Integer
If pageno = 1 Then
startrec = 0
Else
startrec = (pageno - 1) * pagesize
End If
Dim da As New SqlDataAdapter
("select top " & pagesize & " * from MyTable
where id>" & startrec, cnn)
Dim ds As New DataSet()
da.Fill(ds, "table1")
DataList1.DataSource = ds
DataList1.DataBind()
End Sub

Page Load Event


Private Sub Page_Load
(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles MyBase.Load
If Not Page.IsPostBack Then
viewstate("curpage") = 1
Bindgrid(1)
End If
SetTotalPages()
End Sub

Handle Link Button Click events


Private Sub DataList1_ItemCommand
(ByVal source As Object,
ByVal e As DataListCommandEventArgs)
Handles DataList1.ItemCommand

Dim curpage As Integer
Select Case e.CommandName
Case "prev"
curpage = viewstate("curpage")
If curpage > 1 Then
curpage = curpage - 1
Else
curpage = 1
End If
viewstate("curpage") = curpage
Bindgrid(curpage)

Case "next"
curpage = viewstate("curpage")
If curpage < pagecount Then
curpage = curpage + 1
Else
curpage = pagecount
End If
viewstate("curpage") = curpage
Bindgrid(curpage)

End Select
End Sub

:wise1:

dena
یک شنبه 16 اسفند 1383, 01:44 صبح
واقعا از پاسخ شما متشکرم ولی یک مشکل دارم و من به جای پایگاه داده از فایل xml
استفاده می کنم . اطلاعات را هم ریخته ام داخل یک dataset . حالا بگویید چگونه مشخص کنم که فقط یک تعداد معین رکورد داخل datalist نمایش دهم

در واقع مشکل من نحوه استفاده از RowFilter مربوط به dataview است .
همان کد


Dim da As New SqlDataAdapter("select top " & pagesize & " * from MyTable where(ID > " & startrec, cnn) ")


را چگونه روی یک dataset پیاده کنم . البته با استفاده از dataview

Behrouz_Rad
یک شنبه 16 اسفند 1383, 07:18 صبح
نیاز به DataView ندارید.
به خط آخر کد زیر دقت کنید:


Dim dstPasswords As DataSet
Dim dtblPasswords As DataTable
Dim arrUsers() As DataRow

dstPasswords = New DataSet()
dstPasswords.ReadXml( MapPath( "Passwords.xml" ) )
dtblPasswords = dstPasswords.Tables( 0 )
arrUsers = dtblPasswords.Select( "name='" & strUsername & "'" )

خط آخر کد فوق عمل فیلتر کردن را برای شما انجام می دهد.
موفق باشید.

dena
دوشنبه 17 اسفند 1383, 02:38 صبح
واقعا از اینکه وقت می گذارید و جواب مرا می دهید سپاسگزارم.
اما مشکل من مشخص کردن تعداد است . مثلا 3 تا از رکورد های پیدا شده را نشان بده . اصلا برای تبدیل این قسمت کد نیاز دارم.


("select top " & pagesize & " * from MyTable where(ID > " & startrec

این قسمت select top " & pagesize

با تشکر

Behrouz_Rad
دوشنبه 17 اسفند 1383, 09:58 صبح
شما هر دفعه یه چیزی میگی عزیز!
لینک زیر به طور 100 درصد مشکل شما رو حل می کنه.

http://aspnet.4guysfromrolla.com/demos/printPage.aspx?path=/articles/081804-1.aspx

موفق باشید.

fozolefozola
چهارشنبه 16 مرداد 1387, 12:20 عصر
Form level variables


Const pagesize As Integer = 3
Dim pagecount As Integer

Create a sub to calculate total pages


Public Sub SetTotalPages()
If viewstate("pagecount") Is Nothing Then
Dim cnn As New
SqlConnection(Global.GetConnectionString)

Dim cmd As SqlCommand =
New SqlCommand("SELECT Count(*) FROM MyTable", cnn)
cnn.Open()
Dim reccount As Integer =
cmd.ExecuteScalar().ToString()

If reccount Mod pagesize = 0 Then
pagecount = reccount / pagesize
Else
pagecount = CInt(reccount / pagesize) + 1
End If
viewstate("pagecount") = pagecount
cnn.Close()
Else
pagecount = viewstate("pagecount")
End If
End Sub

Write a sub to bind the DataList


Public Sub Bindgrid(ByVal pageno As Integer)
Dim cnn As New SqlConnection("connstr")
Dim startrec As Integer
If pageno = 1 Then
startrec = 0
Else
startrec = (pageno - 1) * pagesize
End If
Dim da As New SqlDataAdapter
("select top " & pagesize & " * from MyTable
where id>" & startrec, cnn)
Dim ds As New DataSet()
da.Fill(ds, "table1")
DataList1.DataSource = ds
DataList1.DataBind()
End Sub

Page Load Event


Private Sub Page_Load
(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles MyBase.Load
If Not Page.IsPostBack Then
viewstate("curpage") = 1
Bindgrid(1)
End If
SetTotalPages()
End Sub

Handle Link Button Click events


Private Sub DataList1_ItemCommand
(ByVal source As Object,
ByVal e As DataListCommandEventArgs)
Handles DataList1.ItemCommand

Dim curpage As Integer
Select Case e.CommandName
Case "prev"
curpage = viewstate("curpage")
If curpage > 1 Then
curpage = curpage - 1
Else
curpage = 1
End If
viewstate("curpage") = curpage
Bindgrid(curpage)

Case "next"
curpage = viewstate("curpage")
If curpage < pagecount Then
curpage = curpage + 1
Else
curpage = pagecount
End If
viewstate("curpage") = curpage
Bindgrid(curpage)

End Select
End Sub

:wise1:


لطف کنید دقیق بگید این کد ها رو کجا کپی کنم
ما بی سوادیم لطف کنید واضح توضیح بدین این کدها همجا هستند ولی توضیحات کامل نیست

Behrouz_Rad
چهارشنبه 16 مرداد 1387, 12:24 عصر
به هر حال بی سوادی هم حدی داره دوست من :)
واضح هستند.