孜孜--程序人生

.net/j2me移动应用技术学习与研究

导航

[原创]WAP文本分页控件(VB版)

Posted on 2006-05-27 17:59  孜孜  阅读(1044)  评论(1)    收藏  举报
用户控件源码 BestTextView.ascx
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="BestTextView.ascx.vb" Inherits="MoaWap.BestTextView" TargetSchema="http://schemas.microsoft.com/Mobile/WebUserControl" %>
<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %>
<mobile:TextView id="tv" runat="server"></mobile:TextView>
<mobile:Panel id="Panel1" runat="server" BreakAfter="True">
    
<mobile:Label id="Label1" runat="server" BreakAfter="False">[</mobile:Label>
    
<mobile:Label id="lbl_currpage" runat="server" BreakAfter="False">1</mobile:Label>
    
<mobile:Label id="Label2" runat="server" BreakAfter="False">/</mobile:Label>
    
<mobile:Label id="lbl_count" runat="server" BreakAfter="False">0</mobile:Label>
    
<mobile:Label id="Label3" runat="server" BreakAfter="False">]  </mobile:Label>
    
<mobile:Label id="lbl_RoteCount" runat="server" BreakAfter="False">0</mobile:Label>
    
<mobile:Label id="Label5" runat="server" BreakAfter="False"></mobile:Label>
</mobile:Panel>
<mobile:Panel id="Panel2" runat="server" BreakAfter="True">
    
<mobile:Command id="btn_first" runat="server" BreakAfter="False" Visible="False">[首页]</mobile:Command>
    
<mobile:command id="btn_syy" runat="server" BreakAfter="False" Visible="False">[上页]</mobile:command>
    
<mobile:command id="btn_xyy" runat="server" BreakAfter="False" Visible="False">[下页]</mobile:command>
    
<mobile:Command id="btn_end" runat="server" BreakAfter="False" Visible="False">[末页]</mobile:Command>
</mobile:Panel>
<mobile:Panel id="Panel3" runat="server">
    
<mobile:Label id="Label4" runat="server" BreakAfter="False">转向</mobile:Label>
    
<mobile:TextBox id="txt_go" runat="server" BreakAfter="False" Size="2" Numeric="True">1</mobile:TextBox>
    
<mobile:Command id="btn_go" runat="server">GO</mobile:Command>
</mobile:Panel>
<mobile:Label id="lbl_index" runat="server" Visible="False">0</mobile:Label>

用户控件源码 BestTextView.VB

委托定义

Public MustInherit Class BestTextView
    
Inherits System.Web.UI.MobileControls.MobileUserControl

Web 窗体设计器生成的代码

变量/属性及事件声明

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


    
'''翻页处理
    Private Sub MyPageIdexChange(ByVal key As String)
        
Select Case key
            
Case "first"
                
If Convert.ToInt32(lbl_count.Text.Trim()) > 0 Then
                    lbl_currpage.Text 
= "1"
                
End If
            
Case "top"
                
If Convert.ToInt32(lbl_currpage.Text.Trim()) > 1 Then
                    lbl_currpage.Text 
= Convert.ToString(Convert.ToInt32(lbl_currpage.Text.Trim()) - 1)
                
End If
            
Case "next"
                
If Convert.ToInt32(lbl_currpage.Text.Trim()) < Convert.ToInt32(lbl_count.Text.Trim()) Then
                    lbl_currpage.Text 
= Convert.ToString(Convert.ToInt32(lbl_currpage.Text.Trim()) + 1)
                
End If
            
Case "last"
                
If Convert.ToInt32(lbl_count.Text.Trim()) > 0 Then
                    lbl_currpage.Text 
= lbl_count.Text.Trim()
                
End If
            
Case "go"
                
If txt_go.Text.Trim() <> "" Then
                    
Dim igo As Integer = CInt(txt_go.Text.Trim())
                    
If igo <= Convert.ToInt32(lbl_count.Text.Trim()) And igo >= 1 Then
                        lbl_currpage.Text 
= txt_go.Text.Trim()
                    
End If
                
End If
        
End Select
        
'触发用户控件的PageIdexChange事件
        'If Not (BestListPageIndexChange Is Nothing) Then
        RaiseEvent BestTextViewPageIndexChange(Me)
        
'End If
    End Sub


    
'数据绑定
    Public Overrides Sub DataBind()
        
If DataString <> "" Then
            
'得出当前记录总数
            Dim RoteCount As Integer = DataString.Length
            
'当不同数据源绑定时恢复当前页为1(根据记录数判断是否是同一个数据源)
            Dim OldRoteCount As Integer = Convert.ToInt32(lbl_RoteCount.Text.Trim())
            
If OldRoteCount <> 0 And OldRoteCount <> RoteCount Then
                lbl_currpage.Text 
= "1"
            
End If
            lbl_RoteCount.Text 
= RoteCount.ToString()
            
'得出页总数
            Dim tespint As Integer = RoteCount Mod PageSize
            
If tespint > 0 Then
                
'lbl_count.Text = Convert.ToString(CInt(RoteCount / PageSize) + 1)
                lbl_count.Text = Convert.ToString(CInt((RoteCount - tespint) / PageSize) + 1)
            
Else
                lbl_count.Text 
= Convert.ToString(RoteCount / PageSize)
            
End If
            
If Convert.ToInt32(lbl_currpage.Text.Trim()) > 0 And Convert.ToInt32(lbl_currpage.Text.Trim()) <= Convert.ToInt32(lbl_count.Text.Trim()) Then
                
'据当前页求出本页的开始记录和取的字数
                Dim start As Integer, tempsize As Integer = 0
                start 
= (Convert.ToInt32(lbl_currpage.Text.Trim()) - 1* PageSize
                
If Convert.ToInt32(lbl_currpage.Text.Trim()) = Convert.ToInt32(lbl_count.Text.Trim()) Then
                    tempsize 
= RoteCount Mod PageSize
                    
If tempsize = 0 Then
                        tempsize 
= PageSize
                    
End If
                
Else
                    tempsize 
= PageSize
                
End If
                tv.Text 
= DataString.Substring(start, tempsize)
            
End If
                
'---------导航按钮控制
                If Convert.ToInt32(lbl_count.Text.Trim()) <= 1 Then
                    
'当只有一页时或没有记录时
                    btn_first.Visible = False
                    btn_syy.Visible 
= False
                    btn_xyy.Visible 
= False
                    btn_end.Visible 
= False
                    Panel1.Visible 
= False
                    Panel3.Visible 
= False
                
ElseIf Convert.ToInt32(lbl_currpage.Text.Trim()) = 1 Then
                    
'当为第一页时
                    btn_first.Visible = False
                    btn_syy.Visible 
= False
                    btn_xyy.Visible 
= True
                    btn_end.Visible 
= True
                    Panel1.Visible 
= True
                    Panel3.Visible 
= True
                
ElseIf Convert.ToInt32(lbl_currpage.Text.Trim()) = Convert.ToInt32(lbl_count.Text.Trim()) Then
                    
'当为最后一页时
                    btn_first.Visible = True
                    btn_syy.Visible 
= True
                    btn_xyy.Visible 
= False
                    btn_end.Visible 
= False
                    Panel1.Visible 
= True
                    Panel3.Visible 
= True
                
ElseIf Convert.ToInt32(lbl_currpage.Text.Trim()) = 2 Then
                    
'当为第二页时
                    btn_first.Visible = True
                    btn_syy.Visible 
= False
                    btn_xyy.Visible 
= True
                    btn_end.Visible 
= True
                    Panel1.Visible 
= True
                    Panel3.Visible 
= True
                
ElseIf Convert.ToInt32(lbl_currpage.Text.Trim()) = Convert.ToInt32(lbl_count.Text.Trim()) - 1 Then
                    
'当为最后一页时
                    btn_first.Visible = True
                    btn_syy.Visible 
= True
                    btn_xyy.Visible 
= False
                    btn_end.Visible 
= True
                    Panel1.Visible 
= True
                    Panel3.Visible 
= True
                
Else
                    btn_first.Visible 
= True
                    btn_syy.Visible 
= True
                    btn_xyy.Visible 
= True
                    btn_end.Visible 
= True
                    Panel1.Visible 
= True
                    Panel3.Visible 
= True
                
End If
            
End If
    
End Sub


    
Private Sub btn_first_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_first.Click
        MyPageIdexChange(
"first")
    
End Sub


    
Private Sub btn_syy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_syy.Click
        MyPageIdexChange(
"top")
    
End Sub


    
Private Sub btn_xyy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_xyy.Click
        MyPageIdexChange(
"next")
    
End Sub


    
Private Sub btn_end_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_end.Click
        MyPageIdexChange(
"last")
    
End Sub


    
Private Sub btn_go_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_go.Click
        MyPageIdexChange(
"go")
    
End Sub


End Class


使用页面 test.aspx
<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="test.aspx.vb" Inherits="MoaWap.test" %>
<%@ Register TagPrefix="uc1" TagName="BestTextView" Src="BestTextView.ascx" %>
<HEAD>
    
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/Mobile/Page">
</HEAD>
<body Xmlns:mobile="http://schemas.microsoft.com/Mobile/WebForm">
    
<mobile:Form id="Form1" runat="server">
        
<FONT face="宋体">
            
<uc1:BestTextView id="bv" runat="server"></uc1:BestTextView>
        
</FONT>
    
</mobile:Form>
</body>

使用页面 test.vb

Public Class test
    
Inherits System.Web.UI.MobileControls.MobilePage

Web 窗体设计器生成的代码

    
Private WithEvents bv As BestTextView
    
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
'获取用户控件
        bv = CType(Me.FindControl("bv"), BestTextView)
    
End Sub


    
Private Sub Form1_Activate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form1.Activate
        filldata()
    
End Sub


    
Private Sub bv_dbgweIndexChange(ByVal sender As ObjectHandles bv.BestTextViewPageIndexChange
        
'重新绑定一下数据
        filldata()
    
End Sub


    
Private Sub filldata()
        bv.PageSize 
= Config.PageTextSize
        bv.DataString 
= "你好,好好abcdef好好好好大厦大厦大厦大厦fffff大厦大厦大厦大厦大厦大厦大厦大aaaaaa厦大厦大厦大厦大.;'厦大厦大dsaf厦大厦大厦大厦大厦大厦大厦大厦大厦大厦大厦大厦大厦大./m厦大厦大厦大厦dsfafadfd/'gs.safdasdf大厦大厦大厦大厦大厦大厦大厦大厦大厦大厦大厦大厦大厦大厦大厦"
        bv.DataBind()
    
End Sub

End Class


效果