自己实现的一个分页-用户控件

前台代码
 1<%@ Control Language="vb" AutoEventWireup="false" Codebehind="page.ascx.vb" Inherits="course.page" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
 2 
 3    <div align="right">
 4        <table width="100%">
 5            <TBODY>
 6                <tr>
 7                    <td>
 8                    
 9                 
10                             
11                            <asp:label id="Label1" runat="server">当前 x/n 页 共3条记录</asp:label>
12                            &nbsp; 
13                        <asp:linkbutton id="Hfirst" runat="server">[首页]</asp:linkbutton>&nbsp;
14                        <asp:linkbutton id="Hpre" runat="server">[上页]</asp:linkbutton> &nbsp;
15                        <asp:linkbutton id="Hnext" runat="server">[下页]</asp:linkbutton> &nbsp;
16                        <asp:linkbutton id="Hend" runat="server">[末页]</asp:linkbutton> &nbsp;
17                        <asp:dropdownlist id="DrpPageList" runat="server" AutoPostBack="True"></asp:dropdownlist>
18
19</td></tr></TBODY></table></div>
20
后台代码
Public Class page
    
Inherits System.Web.UI.UserControl

Web 窗体设计器生成的代码
    
Public usersGrid As DataGrid
    

    
Public Event MyEvent()

    
Private _str As String
    
Public Property str() As String
        
Get
            
Return _str
        
End Get
        
Set(ByVal Value As String)
            _str 
= Value
        
End Set
    
End Property



    
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
'在此处放置初始化页的用户代码
        If Not IsPostBack Then
            
        
End If
    
End Sub

    
Public Sub initMe()
        initDrop()
        initSelf()
    
End Sub

    
Private Sub initDrop()
        
'构建选页下拉列表lstPageSelector,并选中显示其当前页值
        Dim i As Integer
        DrpPageList.Items.Clear()
        
For i = 1 To usersGrid.PageCount
            DrpPageList.Items.Add(i)
            
If i = (usersGrid.CurrentPageIndex + 1Then
                
Me.DrpPageList.Items.Item(i - 1).Selected = True
            
End If
        
Next
    
End Sub


    
Private Sub iniDropState()
        
Me.DrpPageList.SelectedIndex = -1
        
Me.DrpPageList.Items.FindByText((usersGrid.CurrentPageIndex + 1).ToString).Selected = True
    
End Sub

    
Private Sub initSelf()
        
On Error Resume Next
        
'根据当前页值判断linkbutton上页/下页的enabled与否
        If usersGrid.PageCount = 1 Then
            Hfirst.Enabled 
= False
            Hpre.Enabled 
= False
            Hnext.Enabled 
= False
            Hend.Enabled 
= False
        
ElseIf usersGrid.PageCount = 0 Then
            Hfirst.Enabled 
= False
            Hpre.Enabled 
= False
            Hnext.Enabled 
= False
            Hend.Enabled 
= False
        
Else
            
Select Case usersGrid.CurrentPageIndex
                
Case 0
                    Hfirst.Enabled 
= False
                    Hpre.Enabled 
= False
                    Hnext.Enabled 
= True
                    Hend.Enabled 
= True
                
Case (usersGrid.PageCount - 1)
                    Hfirst.Enabled 
= True
                    Hpre.Enabled 
= True
                    Hnext.Enabled 
= False
                    Hend.Enabled 
= False
                
Case Else
                    Hfirst.Enabled 
= True
                    Hpre.Enabled 
= True
                    Hnext.Enabled 
= True
                    Hend.Enabled 
= True
            
End Select
        
End If
        
Me.Label1.Text = "当前 [" + (usersGrid.CurrentPageIndex + 1).ToString + "/" + usersGrid.PageCount.ToString + "] 页  每页 [" + usersGrid.PageSize.ToString + "] 条记录 "


    
End Sub


    
Private Sub Hend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Hend.Click
        
' Cancel edit mode
        usersGrid.EditItemIndex = -1
        usersGrid.CurrentPageIndex 
= usersGrid.PageCount - 1


        
Call MyEvents()
    
End Sub


    
Public Sub InitPagerControls(ByRef grid As DataGrid)
        
Me.usersGrid = grid

    
End Sub





    
Private Sub Hfirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Hfirst.Click
        usersGrid.CurrentPageIndex 
= 0
        usersGrid.EditItemIndex 
= -1
        
Call MyEvents()
    
End Sub


    
Private Sub Hpre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Hpre.Click
        
' Cancel edit mode
        usersGrid.EditItemIndex = -1
        
If (usersGrid.CurrentPageIndex > 0Then usersGrid.CurrentPageIndex = usersGrid.CurrentPageIndex - 1
        
Call MyEvents()
    
End Sub


    
Private Sub Hnext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Hnext.Click
        
' Cancel edit mode
        usersGrid.EditItemIndex = -1
        
If (usersGrid.CurrentPageIndex < (usersGrid.PageCount - 1)) Then usersGrid.CurrentPageIndex = usersGrid.CurrentPageIndex + 1
        
Call MyEvents()
    
End Sub


    
Private Sub DrpPageList_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DrpPageList.SelectedIndexChanged
        
On Error Resume Next
        usersGrid.CurrentPageIndex 
= CInt(Me.DrpPageList.SelectedValue) - 1
        
' Cancel edit mode
        usersGrid.EditItemIndex = -1
        
Call MyEvents()
    
End Sub


    
Private Sub MyEvents()
        
RaiseEvent MyEvent()
        initSelf()
        iniDropState()
    
End Sub

End Class



调用例子
  Public Page1 As Page
  
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
'在此处放置初始化页的用户代码
        policyAdmin(Page, "admin")
        Page1.InitPagerControls(
Me.DataGrid1)
        
AddHandler Page1.MyEvent, AddressOf bind
        
If Not IsPostBack Then
            bind()
        
End If

    
End Sub

posted on 2005-11-16 21:15  黑月  阅读(315)  评论(0编辑  收藏  举报

导航