


委托定义#Region "委托定义"


Public Delegate Sub BestTextView_PageIndexChange()Sub BestTextView_PageIndexChange(ByVal sender As Object)

#End Region



Public MustInherit Class BestTextViewClass BestTextView

Inherits System.Web.UI.MobileControls.MobileUserControl



Web 窗体设计器生成的代码#Region " Web 窗体设计器生成的代码 "


'该调用是 Web 窗体设计器所必需的。


<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()Sub InitializeComponent()


End Sub

Protected WithEvents tv As System.Web.UI.MobileControls.TextView

Protected WithEvents Label3 As System.Web.UI.MobileControls.Label

Protected WithEvents lbl_count As System.Web.UI.MobileControls.Label

Protected WithEvents Label2 As System.Web.UI.MobileControls.Label

Protected WithEvents lbl_currpage As System.Web.UI.MobileControls.Label

Protected WithEvents Label1 As System.Web.UI.MobileControls.Label

Protected WithEvents Panel1 As System.Web.UI.MobileControls.Panel

Protected WithEvents btn_end As System.Web.UI.MobileControls.Command

Protected WithEvents btn_xyy As System.Web.UI.MobileControls.Command

Protected WithEvents btn_syy As System.Web.UI.MobileControls.Command

Protected WithEvents btn_first As System.Web.UI.MobileControls.Command

Protected WithEvents Panel2 As System.Web.UI.MobileControls.Panel

Protected WithEvents btn_go As System.Web.UI.MobileControls.Command

Protected WithEvents txt_go As System.Web.UI.MobileControls.TextBox

Protected WithEvents Label4 As System.Web.UI.MobileControls.Label

Protected WithEvents Panel3 As System.Web.UI.MobileControls.Panel

Protected WithEvents lbl_index As System.Web.UI.MobileControls.Label

Protected WithEvents Label5 As System.Web.UI.MobileControls.Label

Protected WithEvents lbl_RoteCount As System.Web.UI.MobileControls.Label


'注意: 以下占位符声明是 Web 窗体设计器所必需的。

'不要删除或移动它。

Private designerPlaceholderDeclaration As System.Object



Private Sub Page_Init()Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

'CODEGEN: 此方法调用是 Web 窗体设计器所必需的

'不要使用代码编辑器修改它。

InitializeComponent()

End Sub


#End Region



变量/属性及事件声明#Region "变量/属性及事件声明"


Public PageSize As Integer = 10

Public DataString As String = ""

Public Event BestTextViewPageIndexChange As BestTextView_PageIndexChange


'''<summary>

''' 当前索引号

'''</summary>


Public Property SelectIndex()Property SelectIndex() As Integer

Get

If lbl_index.Text <> "" Then

Return Convert.ToInt32(lbl_index.Text)

Else

Return -1

End If

End Get

Set(ByVal Value As Integer)

lbl_index.Text = Convert.ToString(Value)

End Set

End Property


'''<summary>

''' 页数

''' </summary>


Public ReadOnly Property PageCount()Property PageCount() As Integer

Get

Return Convert.ToInt32(lbl_count.Text.Trim())

End Get

End Property


#End Region



Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'在此处放置初始化页的用户代码

End Sub


'''翻页处理


Private Sub MyPageIdexChange()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()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()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()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()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()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()Sub btn_go_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_go.Click

MyPageIdexChange("go")

End Sub


End Class
