index.aspx.vb

来自「《ASP.NET C#程序设计案例教程》」· VB 代码 · 共 112 行

VB
112
字号
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic					'因为用到了Trim函数,所以导入本空间

Public Class myIndex: Inherits Page
	Public myDataGrid As DataGrid
	Public lblPage As Label
	Public txtKeyword,txtPage As TextBox

	Sub Page_Load(Sender As Object, E As EventArgs)
		If Not IsPostBack Then
			Call myDataBind()											'绑定数据
		End If
	End Sub
	'客户单击页码LinkButton触发该事件
	Sub lbtn_Click(Sender As Object, E As EventArgs) 
		Dim arg As String=Sender.CommandName.ToString
		Select Case arg
		Case "First" 
			Session("PageIndex") = 0
		Case "Prev"
			If myDataGrid.CurrentPageIndex>0 Then 
				Session("PageIndex") -=1
			End If
		Case "Next"
			If myDataGrid.CurrentpageIndex<myDataGrid.PageCount-1 Then 
				Session("PageIndex") +=1
			End If
		Case "Last"
			Session("PageIndex") = myDataGrid.PageCount-1
		End Select
		Call myDataBind()												'绑定数据
	End Sub

	'当客户填写页码并单击GO按钮时执行该过程
	Sub btnPage_Click(Sender As Object, E As EventArgs)
		'下面首先获取客户填写的页码,并处理使其符合要求
		Dim intPageIndex As Integer = Convert.ToInt32(txtPage.Text)
		If intPageIndex<1 Then
			intPageIndex=0												'如果客户填写了小于1的页码,则显示首页
		Elseif intPageIndex > myDataGrid.PageCount Then
			intPageIndex = myDataGrid.PageCount-1						'如果填写了大于实际页面的数字,则显示末页
		Else
			intPageIndex = intPageIndex-1								'因为索引从0开始,所以减1
		End If
		txtPage.Text=""													'清空文本框
		'下面设定要显示的页码,然后重新绑定数据
		Session("PageIndex") = intPageIndex	
		Call myDataBind()												'绑定数据
	End Sub

	'该过程用于排序
	Sub MyDataGrid_Sort(Sender As Object, E As DataGridSortCommandEventArgs) 
		Session("SortField")=E.SortExpression							'将排序字段保存在标签中
		myDataBind()													'绑定数据
	End Sub
	'该过程用来查询数据
	Sub Enter_Click(Sender As Object, E As EventArgs)
		Session("Keyword")=Trim(txtKeyword.Text)						'将查询关键词保存在标签中
		Session("PageIndex")=0											'查询数据后,原来的页码就有问题了,此时应该显示第0页
		myDataBind()													'绑定数据							
	End Sub
	'该过程用于绑定数据
	Sub myDataBind()
		'首先读取3个重要变量,分别用来设置页码、查询和排序
		Dim intPageIndex As Integer
		Dim strKeyword,strSortField As String
		intPageIndex=Convert.ToInt32(Session("PageIndex"))
		strKeyword=Session("Keyword")
		strSortField=Session("SortField")
		'下面根据三个变量绑定数据
		Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("address.mdb"))									'建立Connection对象
		Dim adp As New OleDbDataAdapter("select * from users", conn)	'建立DataAdapter对象
		Dim ds As New DataSet()											'建立DataSet对象
		adp.Fill(ds, "users")											'填充DataSet
		'下面根据查找关键词设置筛选条件
		Dim strSql As String
		If strKeyword<>"" Then
			Dim arryKeyword(),strFilter As String
			Dim I As Integer
			arryKeyword=Split(strKeyword," ")							'按空格拆分多个关键词
			strFilter="name Like '%" & arryKeyword(0) & "%'"			'先添加第一个关键词
			For I=1 To arryKeyword.Length-1
				strFilter &= " And name Like '%" & arryKeyword(I) & "%'"	'注意And前留一个空格
			Next
			ds.Tables("users").DefaultView.RowFilter = strFilter		'设置筛选条件
		End If
		'下面根据排序字段设置排序效果,为了简单,始终按倒叙排列
		If strSortField<>"" Then
			ds.Tables("users").DefaultView.Sort=strSortField & " Desc"	'注意Desc前留一个空格
		End If
		'如果发生错误,可能就是因为删除的最后一页最后一行,所以这里进行了错误判断
		Dim error_1 As Exception           
		Try
			myDataGrid.CurrentPageIndex = intPageIndex
			myDataGrid.DataSource=ds.Tables("users").DefaultView
			myDataGrid.DataBind()	
		Catch error_1                    
			myDataGrid.CurrentPageIndex = intPageIndex-1				'如果发生错误,则令页码减1
			Session("PageIndex")= intPageIndex-1						'将改变后的页码保存到Session中
			myDataGrid.DataSource=ds.Tables("users").DefaultView
			myDataGrid.DataBind()	
			
		End try
		'显示当前页和总页码
		lblPage.Text = (myDataGrid.CurrentPageIndex + 1) & "/" & myDataGrid.PageCount
	End Sub
End Class

⌨️ 快捷键说明

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