View Full Version : صفحه بندی datalist
dena
شنبه 15 اسفند 1383, 03:03 صبح
آیا می شود data list را page بندی کرد. یا تعیین کرد چند تا رکورد را نمایش دهد.
Behrouz_Rad
شنبه 15 اسفند 1383, 08: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, 02: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, 08: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, 03:38 صبح
واقعا از اینکه وقت می گذارید و جواب مرا می دهید سپاسگزارم.
اما مشکل من مشخص کردن تعداد است . مثلا 3 تا از رکورد های پیدا شده را نشان بده . اصلا برای تبدیل این قسمت کد نیاز دارم.
("select top " & pagesize & " * from MyTable where(ID > " & startrec
این قسمت select top " & pagesize
با تشکر
Behrouz_Rad
دوشنبه 17 اسفند 1383, 10:58 صبح
شما هر دفعه یه چیزی میگی عزیز!
لینک زیر به طور 100 درصد مشکل شما رو حل می کنه.
http://aspnet.4guysfromrolla.com/demos/printPage.aspx?path=/articles/081804-1.aspx
موفق باشید.
fozolefozola
چهارشنبه 16 مرداد 1387, 13: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, 13:24 عصر
به هر حال بی سوادی هم حدی داره دوست من :)
واضح هستند.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.