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" />
<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 + -
显示快捷键?