Avatar billede aero Nybegynder
11. december 2010 - 19:04 Der 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

Code
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Linq.Mapping

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

End Class
Avatar billede aero Nybegynder
12. december 2010 - 00:09 #1
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

End Class
Avatar billede aero Nybegynder
12. december 2010 - 00:40 #2
lukket fandt en løsning
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester