index.aspx

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

ASPX
158
字号
<%@ Page Debug="True"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="VB" runat="server">
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中
	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
</script>
<html>
<body>
	<h3 align="center">通讯录综合示例(二)</h3>
	<form runat="server">
	请输入关键词<asp:TextBox id="txtKeyword" runat="server"/>
	<asp:Button id="Enter" Text="确定" onClick="Enter_Click" runat="server"/>
	<asp:HyperLink Text="添加新记录" NavigateUrl="add.aspx" runat="server"/>
	<p>
	<asp:DataGrid id="myDataGrid" Width="100%" HeaderStyle-BackColor="#BCBCBC"
		DataKeyField="id" 
		AllowPaging="True"
		PageSize="10"
		PagerStyle-Visible="false" 
		AllowSorting="True"
		OnSortCommand="MyDataGrid_Sort" 
		AutoGenerateColumns="False" 
		runat="server">
		<Columns>
			<asp:HyperLinkColumn HeaderText="编辑" Text="编辑" DataNavigateUrlField="id" DataNavigateUrlFormatString="UpdateData.aspx?id={0}"/>
			<asp:HyperLinkColumn HeaderText="删除" Text="删除" DataNavigateUrlField="id" DataNavigateUrlFormatString="DeleteData.aspx?id={0}"/>
			<asp:BoundColumn HeaderText="编号" DataField="id" ReadOnly="True" SortExpression="id" />
			<asp:TemplateColumn HeaderText="姓名" SortExpression="name">
				<ItemTemplate>
					<a href="#" onClick="open('particular.aspx?id=<%# Container.DataItem("id") %>','详细信息','width=500,height=300,left=150,top=150,resizable=0,scrollbars=1,status=no,toolbar=no,location=no,menu=no')"><%# Container.DataItem("name") %></a>
				</ItemTemplate>
			</asp:TemplateColumn>
			<asp:TemplateColumn HeaderText="电话" SortExpression="tel">
				<ItemTemplate>
					<asp:Label id="lblTel" Text='<%# Container.DataItem("tel") %>' runat="server"/>
				</ItemTemplate>
			</asp:TemplateColumn>
			<asp:TemplateColumn HeaderText="E-mail" SortExpression="email">
				<ItemTemplate>
					<asp:HyperLink Text='<%# Container.DataItem("email") %>' NavigateUrl='<%# "mailto:" & Container.DataItem("email") %>' runat="server"/>
				</ItemTemplate>
			</asp:TemplateColumn>
			<asp:TemplateColumn HeaderText="简介" SortExpression="intro">
				<ItemTemplate>
					<asp:Label id="lblIntro" Text='<%# Container.DataItem("intro") %>' runat="server"/>
				</ItemTemplate>
			</asp:TemplateColumn>
		</Columns>
	</asp:DataGrid>
	<p align="right">
	<asp:Label id="lblPage" runat="server"/>
	<asp:LinkButton id="lbtnFirst" Text="首页" CommandName="First" onClick="lbtn_Click" runat="server"/>
	<asp:LinkButton id="lbtnPrev" Text="上一页" CommandName="Prev"  onClick="lbtn_Click" runat="server"/>
	<asp:LinkButton id="lbtnNext" Text="下一页" CommandName="Next" onClick="lbtn_Click" runat="server"/>
	<asp:LinkButton id="lbtnLast" Text="尾页" CommandName="Last" onClick="lbtn_Click" runat="server"/>
	&nbsp;&nbsp;<asp:TextBox id="txtPage" Columns="2" runat="server"/>
	<asp:Button id="btnPage" onClick="btnPage_Click" Text="GO" runat="server"/>
	</form>
</body>
</html>

⌨️ 快捷键说明

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