index.aspx

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

ASPX
188
字号
<%@ Page Debug="True"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="VB" runat="server">

'因为多个过程中都会用到,所以这里设为页面变量
Dim ds As New DataSet()											'建立DataSet对象

'该过程用来返回DataSet对象
Sub Page_Load(Sender As Object, E As EventArgs)
	'改判断语句用来返回DataSet对象
	If Cache("ds") Is Nothing Then
		'如果缓存为空,则要生成DataSet对象,并保存到缓存中
		Dim conn As New SqlConnection("Server=localhost;Database=address;Uid=test;Pwd=123456")
		Dim adp As New SqlDataAdapter("Select * From users", conn)
		adp.Fill(ds,"users")										
		Cache("ds")=ds												'将DataSet对象缓存起来
	Else
		'如果缓存不为空,则直接从缓存中读取DataSet对象
		ds=Cache("ds")												'从缓存中调用DataSet对象
	End If

	'改判断语句用来在第1次打开页面时绑定数据
	If Not Page.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")

	'下面根据三个变量绑定数据,这里不再需要填充DataSet对象了,Page_Load过程中已经从Cache中读取到ds变量中了

	'下面根据查找关键词设置筛选条件
	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		'设置筛选条件
	Else
		ds.Tables("users").DefaultView.RowFilter = ""				'如果关键词为空,就取消该筛选条件
	End If
	'下面根据排序字段设置排序效果,为了简单,始终按倒叙排列
	If strSortField<>"" Then
		ds.Tables("users").DefaultView.Sort=strSortField & " Desc"	'注意Desc前留一个空格
	Else
		ds.Tables("users").DefaultView.Sort=""						'如果排序字段为空,就取消排序条件
	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>
<head>
	<link href="Style.css" type="text/css" rel="stylesheet">
</head>
<body>
	<h3 align="center">通讯录综合示例(五)</h3>
	<form runat="server">
	请输入关键词<asp:TextBox id="txtKeyword" runat="server"  CssClass="inputbox"/>
	<asp:Button id="Enter" Text="确定" onClick="Enter_Click" runat="server" CssClass="inputbutton"/>
	<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">

		<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"/>
		<ItemStyle ForeColor="Black" BackColor="#EEEEEE"/>
		<AlternatingItemStyle BackColor="Gainsboro"/>
		<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084"/>
		<FooterStyle ForeColor="Black" BackColor="#CCCCCC"/>

		<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" CssClass="inputbox"/>
	<asp:Button id="btnPage" onClick="btnPage_Click" Text="GO" runat="server" CssClass="inputbutton"/>
	</form>
</body>
</html>

⌨️ 快捷键说明

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