Default.aspx.vb
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub ListView1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.PreRender
Dim db As TableDataContext = New TableDataContext
Try
Dim dataTable = From b In db.Tables _
Select b.Field1, b.Field2
Catch ex As Exception
Server.Transfer("~/404.aspx")
End Try
End Sub
Protected Sub ListView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DataBound
Dim currentPage As Integer
Dim totalPages As Integer = ListPager.TotalRowCount / ListPager.PageSize
If Not IsNothing(Request.QueryString("Page")) Then
currentPage = Convert.ToInt32(Request.QueryString("Page"))
Else
currentPage = 1
End If
If (totalPages <= currentPage * ListPager.PageSize) Then
lnkNext.Enabled = False
End If
If (currentPage < 2) Then
lnkPrev.Enabled = False
End If
Dim nextQueryString As StringBuilder = New StringBuilder
Dim prevQueryString As StringBuilder = New StringBuilder
Dim pageKeyExists As Boolean = False
Dim isFirstKey As Boolean = True
Dim key As String
For Each key In Request.QueryString.AllKeys
If isFirstKey <> True Then
nextQueryString.Append("&")
prevQueryString.Append("&")
End If
If (key = "Page") Then
nextQueryString.AppendFormat("Page={0}", currentPage + 1)
prevQueryString.AppendFormat("Page={0}", currentPage - 1)
pageKeyExists = True
Else
nextQueryString.AppendFormat("{0}={1}", key, Request.QueryString(key))
prevQueryString.AppendFormat("{0}={1}", key, Request.QueryString(key))
End If
isFirstKey = False
Next
If pageKeyExists <> True Then
If Request.QueryString.Keys.Count > 0 Then
nextQueryString.Append("&")
prevQueryString.Append("&")
End If
nextQueryString.Append("Page=2")
lnkPrev.Enabled = False
End If
Dim pageNo As Integer = Convert.ToInt32(currentPage)
Dim startRowIndex As Integer = (pageNo - 1) * ListPager.PageSize
ListPager.SetPageProperties(startRowIndex, ListPager.PageSize, True)
End Sub
...I have to double click on the navigation links...
you mean it all work's well on your part after double clicking the links?
Simon Deshaies
...did you come up with a solution?
I just found out that it keeps posting back so I remove the databound_event (grrr!) and put it in prerender instead then bind it afterwards.
... Protected Sub ListView1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.PreRender
Dim db As TableDataContext = New TableDataContext
Try
Dim dataTable = From b In db.Tables _
Select b.Field1, b.Field2
Member
322 Points
1301 Posts
Paging Navigation with DataPager
Mar 25, 2008 11:58 PM|imperialx|LINK
Hello,
The link navigation work's well but the Listview control doesn't move to next or previous record. [:(]
Default.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ListView ID="ListView1" runat="server">
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<div class="entry">
<%#Eval("Field1")%> <%#Eval("Field2")%>
</div>
</ItemTemplate>
</asp:ListView>
<div class="navigation">
<asp:DataPager ID="SearchListPager" runat="server" PagedControlID="ListView1" PageSize="1">
</asp:DataPager>
<asp:HyperLink ID="lnkPrev" runat="server"><< Older</asp:HyperLink>
<asp:Literal ID="Literal1" runat="server" Text=" - "></asp:Literal>
<asp:HyperLink ID="lnkNext" runat="server">Newer >></asp:HyperLink>
</div>
</div>
</form>
</body>
</html>
Default.aspx.vb
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub ListView1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.PreRender
Dim db As TableDataContext = New TableDataContext
Try
Dim dataTable = From b In db.Tables _
Select b.Field1, b.Field2
ListView1.DataSource = dataTable
ListView1.DataBind()
Catch ex As Exception
Server.Transfer("~/404.aspx")
End Try
End Sub
Protected Sub ListView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DataBound
Dim currentPage As Integer
Dim totalPages As Integer = ListPager.TotalRowCount / ListPager.PageSize
If Not IsNothing(Request.QueryString("Page")) Then
currentPage = Convert.ToInt32(Request.QueryString("Page"))
Else
currentPage = 1
End If
If (totalPages <= currentPage * ListPager.PageSize) Then
lnkNext.Enabled = False
End If
If (currentPage < 2) Then
lnkPrev.Enabled = False
End If
Dim nextQueryString As StringBuilder = New StringBuilder
Dim prevQueryString As StringBuilder = New StringBuilder
Dim pageKeyExists As Boolean = False
Dim isFirstKey As Boolean = True
Dim key As String
For Each key In Request.QueryString.AllKeys
If isFirstKey <> True Then
nextQueryString.Append("&")
prevQueryString.Append("&")
End If
If (key = "Page") Then
nextQueryString.AppendFormat("Page={0}", currentPage + 1)
prevQueryString.AppendFormat("Page={0}", currentPage - 1)
pageKeyExists = True
Else
nextQueryString.AppendFormat("{0}={1}", key, Request.QueryString(key))
prevQueryString.AppendFormat("{0}={1}", key, Request.QueryString(key))
End If
isFirstKey = False
Next
If pageKeyExists <> True Then
If Request.QueryString.Keys.Count > 0 Then
nextQueryString.Append("&")
prevQueryString.Append("&")
End If
nextQueryString.Append("Page=2")
lnkPrev.Enabled = False
End If
lnkPrev.NavigateUrl = "~/default.aspx?" + prevQueryString.ToString()
lnkNext.NavigateUrl = "~/default.aspx?" + nextQueryString.ToString()
Dim pageNo As Integer = Convert.ToInt32(currentPage)
Dim startRowIndex As Integer = (pageNo - 1) * ListPager.PageSize
ListPager.SetPageProperties(startRowIndex, ListPager.PageSize, True)
End Sub
End Class
cheers,
imperialx
Member
62 Points
70 Posts
Re: Paging Navigation with DataPager
Apr 18, 2008 09:53 AM|Simon Deshaies|LINK
Hi imperialx,
I'm having a similar problem I have to double click on the navigation links, did you come up with a solution?
Member
322 Points
1301 Posts
Re: Paging Navigation with DataPager
Apr 18, 2008 10:44 PM|imperialx|LINK
you mean it all work's well on your part after double clicking the links?
I just found out that it keeps posting back so I remove the databound_event (grrr!) and put it in prerender instead then bind it afterwards.
...
Protected Sub ListView1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.PreRender
Dim db As TableDataContext = New TableDataContext
Try
Dim dataTable = From b In db.Tables _
Select b.Field1, b.Field2
--put code from DataBound here--
ListView1.DataSource = dataTable
ListView1.DataBind()
Catch ex As Exception
Server.Transfer("~/404.aspx")
End Try
End Sub
...
cheers,
imperialx
Member
62 Points
70 Posts
Re: Paging Navigation with DataPager
Apr 19, 2008 10:14 AM|Simon Deshaies|LINK
Thanks for the code I'll give it a try.