⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 customrepeater.vb

📁 《ASP.NET程序设计实用教程》源代码,这本书非常使用,有次源码更是锦上添花,谢谢使用
💻 VB
字号:
Imports System 
Imports System.Collections								'因为用到模板,所以要导入以下两个名称空间
Imports System.Collections.Specialized 
Imports System.Web.UI 
Imports System.Web.UI.WebControls						'因为继承自Repeater控件,所以要导入 


Namespace nsASPNETCase									'这是自定义名称空间的名字										

'该类继承自Repeater控件,并且实现IPostBackEventHandler接口,主要为了实现JavaScript回传
Public Class CustomRepeater : Inherits Repeater : Implements IPostBackEventHandler

	'以下定义4个私有变量,分别用来保存数据源、每页显示记录数、当前显示页、总页数
	Private _DataSource As Object 
	Private _PageSize As Integer = 10 
	Private _CurrentPageIndex As Integer 
	Private _PageCount As Integer 
	'下面定义一个只写属性,用来设置数据源
	Public Shadows WriteOnly Property DataSource() As Object 
		Set 
			'这里利用PagedDataSource实现分页
			Dim pgds As New PagedDataSource 
			pgds.DataSource = CType(Value, IList)		'接受外部数据源,并转换为IList类型 
			pgds.AllowPaging = True						'设置允许分页
			pgds.PageSize = _PageSize					'设置每页显示条数 
			pgds.CurrentPageIndex = _CurrentPageIndex	'设置当前显示第几页
			_PageCount = pgds.PageCount					'返回总共有多少页 
			_DataSource = pgds							'将分好页的数据源保存到私有变量中 
		End Set 
	End Property 
	'该属性用来获取或设置每页显示条数
	Public Property PageSize() As Integer 
		Get 
			Return _PageSize							'返回属性值 
		End Get 
		Set 
			_PageSize = Value							'将属性值保存到私有变量中 
		End Set 
	End Property 
	'该属性用来获取总页数
	Public ReadOnly Property PageCount() As Integer 
	Get 
		Return _PageCount								'返回属性值 
	End Get 
	End Property 
	'该属性用来获取或设置当前显示第几页
	Public Overridable Property CurrentPageIndex() As Integer 
		Get 
			Return _CurrentPageIndex					'返回属性值 
		End Get 
		Set 
			_CurrentPageIndex = Value					'将属性值保存到私有变量中 
		End Set 
	End Property 
	'重写Render方法,在页面上显示内容
	Protected Overloads Overrides Sub Render(htw As HtmlTextWriter) 
		'首先显示Repeater控件原有的HTML内容
		MyBase.Render(htw) 
		'下面输出当前显示页数和总页数的信息
		htw.Write("<p align=right>")
		htw.Write((_CurrentPageIndex+1) & "/" & (_PageCount) & " ")
		'以下将会输出“首页、上一页、下一页和尾页”的超链接
		Dim pfirst As String
		Dim pprev As String
		Dim pnext As string
		Dim plast As String
		'根据当前显示页和总页数的值设置超链接要返回的参数,
		'它们其实是对应的数字,只不过这里当作字符串处理了
		pfirst="0"
		if _CurrentPageIndex<=0 Then 
			pprev="0"
		Else
			pprev=(_CurrentPageIndex-1).ToString
		End If
		if _CurrentPageIndex>=_PageCount-1 Then 
			pnext=(_PageCount-1).ToString
		Else
			pnext=(_CurrentPageIndex+1).ToString
		End If
		plast=(_PageCount-1).ToString
		'输出各个超链接,注意其中的参数pfirst、pprev、pnext和plast
		htw.AddAttribute(HtmlTextWriterAttribute.Href, Me.Page.GetPostBackClientHyperlink(Me, pfirst)) 
		htw.RenderBeginTag(HtmlTextWriterTag.A)				'开始一个标记 
		htw.Write("首页")									
		htw.RenderEndTag									'结束一个标记
		htw.Write(" ")										'输出一个空格 
		htw.AddAttribute(HtmlTextWriterAttribute.Href, Me.Page.GetPostBackClientHyperlink(Me, pprev)) 
		htw.RenderBeginTag(HtmlTextWriterTag.A) 
		htw.Write("上一页") 
		htw.RenderEndTag 
		htw.Write(" ") 
		htw.AddAttribute(HtmlTextWriterAttribute.Href, Me.Page.GetPostBackClientHyperlink(Me, pnext)) 
		htw.RenderBeginTag(HtmlTextWriterTag.A) 
		htw.Write("下一页") 
		htw.RenderEndTag 
		htw.Write(" ") 
		htw.AddAttribute(HtmlTextWriterAttribute.Href, Me.Page.GetPostBackClientHyperlink(Me, plast)) 
		htw.RenderBeginTag(HtmlTextWriterTag.A) 
		htw.Write("尾页") 
		htw.RenderEndTag 
		htw.Write("</p>")
	End Sub 
	'重写OnDataBinding方法,用于绑定数据
	Protected Overloads Overrides Sub OnDataBinding(ByVal e As EventArgs) 
		'注意这里首先将分好页的数据源赋值给基类的DataSource属性,然后调用基类的OnDataBinding方法。
		MyBase.DataSource = _DataSource			 
		MyBase.OnDataBinding(e) 
	End Sub
	'下面定义了一个PageIndexChanged事件,它其实使用了DataGrid的分页事件
	'当触发该事件时,就会返回一个客户要显示的数据页
	Public Event PageIndexChanged As DataGridPageChangedEventHandler 
	Protected Overridable Sub OnPageIndexChanged(ByVal e As DataGridPageChangedEventArgs) 
		RaiseEvent PageIndexChanged(Me, e) 
	End Sub 
	'这里是实现一个客户端JavaScript回发,当用户单击上面的超链接时,
	'就会触发上面定义的PageIndexChanged事件,并将对应的数据页参数传递过去
	Public Sub RaisePostBackEvent(EventArgument As String) Implements IPostBackEventHandler.RaisePostBackEvent
		Dim PageIndex As Integer= EventArgument
		OnPageIndexChanged(New DataGridPageChangedEventArgs(Nothing, PageIndex))
	End Sub
End Class 
End Namespace

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -