11. december 2010 - 19:04Der er
1 kommentar og 1 løsning
Paging problem
Hej
Jeg har 5 recorder og har i min pagesize kode sagt at der skal være 2 recorder pr. side, det virker fint den viser bare KUN en side og ikke tre, hvad er problemet
Partial Class _Default Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) If (Not IsPostBack) Then linqdb(10, 0) Else plcPaging.Controls.Clear() CreatePagingControl() End If End Sub
Private Sub linqdb(ByVal take As Integer, ByVal pageSize As Integer)
Using DBconn As New GetProductListDataContext() Dim Q = _ From p In DBconn.GetTable(Of Product)() _ Where p.IsEnabled = "1" _ Order By p.PName Descending _ Select p
Dim page As New PagedDataSource() page.AllowCustomPaging = True page.AllowPaging = True page.DataSource = Q page.PageSize = 2 MyRep.DataSource = page MyRep.DataBind()
Dim lbl As Label = CType(MyRep.Controls(MyRep.Controls.Count - 1).FindControl("PValue"), Label)
If lbl Is Nothing Then lbl.Text = "0" Else lbl.Text = Q.ToList.Count() End If
If (Not IsPostBack) Then RowCount = Q.ToList.Count() CreatePagingControl() End If End Using
Dim nodata As Label = CType(MyRep.Controls(MyRep.Controls.Count - 1).FindControl("NoData"), Label) If nodata Is Nothing Then nodata.Text = "Der findes ingen data der machter din forespørgsel." End If End Sub
Private Sub CreatePagingControl() For i As Integer = 0 To (RowCount / 10) Dim lnk As New LinkButton() AddHandler lnk.Click, AddressOf lbl_Click lnk.ID = "lnkPage" & (i + 1).ToString() lnk.Text = (i + 1).ToString() plcPaging.Controls.Add(lnk) Dim spacer As New Label() spacer.Text = " " plcPaging.Controls.Add(spacer) Next i End Sub
Private Sub lbl_Click(ByVal sender As Object, ByVal e As EventArgs) Dim lnk As LinkButton = TryCast(sender, LinkButton) Dim currentPage As Integer = Integer.Parse(lnk.Text) Dim take As Integer = currentPage * 10 Dim skip As Integer = If(currentPage = 1, 0, take - 10) linqdb(take, skip) End Sub
Private Property RowCount() As Integer Get Return CInt(ViewState("RowCount")) End Get Set(ByVal value As Integer) ViewState("RowCount") = value End Set End Property
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Har næsten løst det, men får denne fejl ang. min ...New Product = p.... Fejlen er "Range variable name can be inferred only from a simple or qualified name with no arguments."
Min code er Imports System.Data Imports System.Data.SqlClient Imports System.Data.Linq.Mapping
Partial Class _Default Inherits System.Web.UI.Page
Dim PageItemSize As Integer = 2 Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) If (Not IsPostBack) Then linqdb(10, 0) Else plcPaging.Controls.Clear() CreatePagingControl() End If End Sub
Private Sub linqdb(ByVal take As Integer, ByVal pageSize As Integer)
Using DBconn As New GetProductListDataContext() Dim Q = From p In DBconn.GetTable(Of Product).Take(take).Skip(pageSize) _ Where p.IsEnabled = "1" _ Order By p.PName Descending _ Select New Product = p, Count = DBconn.GetTable(Of Product).Count()
Dim page As New PagedDataSource() page.AllowCustomPaging = True page.AllowPaging = True page.DataSource = Q page.PageSize = PageItemSize MyRep.DataSource = page MyRep.DataBind()
If MyRep.Controls.Count > 0 Then Dim lbl As Label = CType(MyRep.Controls(MyRep.Controls.Count - 1).FindControl("PValue"), Label) If lbl Is Nothing Then Throw New Exception("") End If lbl.Text = Q.ToList.Count() Else Dim nodata As Label = CType(MyRep.Controls(MyRep.Controls.Count - 1).FindControl("NoData"), Label) nodata.Text = "Der findes ingen data der machter din forespørgsel." End If
If (Not IsPostBack) Then RowCount = Q.ToList.Count() CreatePagingControl() End If End Using End Sub
Private Sub CreatePagingControl() For i As Integer = 0 To (RowCount / PageItemSize) Dim lnk As New LinkButton() AddHandler lnk.Click, AddressOf lbl_Click lnk.ID = "lnkPage" & (i + 1).ToString() lnk.Text = (i + 1).ToString() plcPaging.Controls.Add(lnk) Dim spacer As New Label() spacer.Text = " " plcPaging.Controls.Add(spacer) Next i End Sub
Private Sub lbl_Click(ByVal sender As Object, ByVal e As EventArgs) Dim lnk As LinkButton = TryCast(sender, LinkButton) Dim currentPage As Integer = Integer.Parse(lnk.Text) Dim take As Integer = currentPage * PageItemSize Dim skip As Integer = If(currentPage = 1, 0, take - PageItemSize) linqdb(take, skip) End Sub
Private Property RowCount() As Integer Get Return CInt(ViewState("RowCount")) End Get Set(ByVal value As Integer) ViewState("RowCount") = value End Set End Property
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.