Created
April 23, 2013 19:46
-
-
Save dannylloyd/5446799 to your computer and use it in GitHub Desktop.
Paged repeater code to populate data from generic object
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Option Strict Off | |
| Imports Extendo | |
| Imports System.ComponentModel | |
| Imports System.Reflection | |
| <ParseChildren(True)> | |
| Public Class PagedRepeater | |
| Inherits System.Web.UI.UserControl | |
| Public Property PageSize As Integer | |
| Get | |
| If ViewState("PageSize") Is Nothing Then | |
| ViewState("PageSize") = 0 | |
| End If | |
| Return DirectCast(ViewState("PageSize"), Integer) | |
| End Get | |
| Set(value As Integer) | |
| ViewState("PageSize") = value | |
| End Set | |
| End Property | |
| Public Property PageNumber As Integer | |
| Get | |
| If ViewState("PageNumber") Is Nothing Then | |
| ViewState("PageNumber") = 0 | |
| End If | |
| Return DirectCast(ViewState("PageNumber"), Integer) | |
| End Get | |
| Private Set(value As Integer) | |
| ViewState("PageNumber") = value | |
| End Set | |
| End Property | |
| Public Property TheType As Type | |
| Get | |
| Return DirectCast(ViewState("ObjectType"), Type) | |
| End Get | |
| Set(value As Type) | |
| ViewState("ObjectType") = value | |
| End Set | |
| End Property | |
| Public Property Query As PetaPoco.Sql | |
| Get | |
| Return DirectCast(ViewState("Query"), PetaPoco.Sql) | |
| End Get | |
| Set(value As PetaPoco.Sql) | |
| ViewState("Query") = value | |
| End Set | |
| End Property | |
| Public Sub BindData() | |
| 'Settings.Db.Page(Of Entities.Request)(PageNumber, PageSize, Query) | |
| ' . | |
| ' .:;:. | |
| ' .:;;;;;:. | |
| ' ;;;;; | |
| ' ;;;;; | |
| ' ;;;;; | |
| ' ;;;;; | |
| ' ;:;;; | |
| ' : ;;; | |
| ' This is the same as this but it is needed because of the use of generics. Daniel Lloyd | |
| ' ;;;;. | |
| ' ;;;;; | |
| ' ;;;;; | |
| ' ;;;;; | |
| ' ;;;;; | |
| ' ;;;;; | |
| ' ..;;;;;.. | |
| ' ':::::' | |
| ' ':` | |
| Dim methodInfo As MethodInfo = GetType(PetaPoco.Database) _ | |
| .GetMethods() _ | |
| .Where(Function(m) m.Name = "Page" AndAlso m.GetParameters().Length = 3) _ | |
| .Single() | |
| Dim page = methodInfo.MakeGenericMethod(TheType).Invoke(Settings.Db, New Object() {PageNumber + 1, PageSize, Query}) | |
| lblCurrentPage.Text = (PageNumber + 1).ToString() + " of " + page.TotalPages.ToString() | |
| pager.Visible = Not page.TotalItems = 0 | |
| btnPrev.Enabled = Not (PageNumber = 0) | |
| btnNext.Enabled = Not (PageNumber + 1 = page.TotalPages) | |
| btnPrevContainer.AddRemoveClass((PageNumber = 0), "disabled") | |
| btnNextContainer.AddRemoveClass((PageNumber + 1 = Page.TotalPages), "disabled") | |
| rptData.DataSource = page.Items | |
| rptData.ItemTemplate = Me.ItemTemplate | |
| rptData.DataBind() | |
| End Sub | |
| Public Sub SetDataSource(Of T)(data As PetaPoco.Sql) | |
| TheType = GetType(T) | |
| Query = data | |
| BindData() | |
| End Sub | |
| Protected Sub btnPrev_Click(sender As Object, e As EventArgs) | |
| PageNumber -= 1 | |
| BindData() | |
| End Sub | |
| Protected Sub btnNext_Click(sender As Object, e As EventArgs) | |
| PageNumber += 1 | |
| BindData() | |
| End Sub | |
| <Category("Behavior"), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), NotifyParentProperty(True), PersistenceMode(PersistenceMode.InnerDefaultProperty)> _ | |
| Public Property ItemTemplate As ITemplate | |
| Get | |
| Return DirectCast(ViewState("listViewEmptyTemplate"), ITemplate) | |
| End Get | |
| Set(value As ITemplate) | |
| ViewState("listViewEmptyTemplate") = value | |
| End Set | |
| End Property | |
| <Category("Behavior"), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), NotifyParentProperty(True), PersistenceMode(PersistenceMode.InnerDefaultProperty)> | |
| Public Property HeaderTemplate As String | |
| Private _Classes As String = "table table-stripped table-condensed" | |
| Public Property Classes As String | |
| Get | |
| Return _Classes | |
| End Get | |
| Set(value As String) | |
| _Classes = value | |
| End Set | |
| End Property | |
| End Class |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment