index.aspx
来自「《ASP.NET C#程序设计案例教程》」· ASPX 代码 · 共 216 行
ASPX
216 行
<%@ 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
'单击编辑时,执行该事件过程。
Sub myDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)
myDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
Call myDataBind()
End Sub
'单击取消时,执行该事件过程。
Sub myDataGrid_Cancel(Sender As Object, E As DataGridCommandEventArgs)
myDataGrid.EditItemIndex = -1
Call myDataBind()
End Sub
'单击更新时,执行该事件过程。
Sub myDataGrid_Update(Sender As Object, E As DataGridCommandEventArgs)
'以下首先获取客户更新的值
Dim objName,objTel,objEmail,objIntro As textbox '声明文本框控件变量
objName=E.Item.Cells(3).Controls(1) '获取姓名
objTel=E.Item.Cells(4).Controls(1) '获取电话
objEmail=E.Item.Cells(5).Controls(1) '获取E-mail
objIntro=E.Item.Cells(6).Controls(1) '获取简介
'下面建立Connection对象,并利用含有参数的SQL语句更新数据库
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("address.mdb"))
Dim strSql="Update users Set name=@name,tel=@tel,email=@email,intro=@intro Where id=@id"
Dim cmd As New OleDbCommand(strSql, conn)
'下面给参数赋值
cmd.Parameters.Add(New OleDbParameter("@name",OleDbType.VarWChar,5))
cmd.Parameters("@name").Value=objName.Text
cmd.Parameters.Add(New OleDbParameter("@tel",OleDbType.VarWChar,13))
cmd.Parameters("@tel").Value=objTel.Text
'下面给@email赋值,如果客户没有输入,则赋NULL值
cmd.Parameters.Add(New OleDbParameter("@email",OleDbType.VarWChar,50))
If objEmail.Text<>"" Then
cmd.Parameters("@email").Value=objEmail.Text
Else
cmd.Parameters("@email").Value=DBNull.Value '赋值NULL
End If
'下面给@intro赋值,如果客户没有输入,则赋NULL值
cmd.Parameters.Add(New OleDbParameter("@intro",OleDbType.VarWChar))
If objIntro.Text<>"" Then
cmd.Parameters("@intro").Value=objIntro.Text
Else
cmd.Parameters("@intro").Value=DBNull.Value '赋值NULL
End If
cmd.Parameters.Add(New OleDbParameter("@id",OleDbType.Integer))
cmd.Parameters("@id").Value=myDataGrid.DataKeys(E.Item.ItemIndex)
'执行更新操作
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
'重新绑定数据
myDataGrid.EditItemIndex = -1
Call myDataBind()
End Sub
'该过程用于删除行,不过要注意其中会判断是最后一页,且只有一行的情况
Sub MyDataGrid_Delete(Sender As Object, E As DataGridCommandEventArgs)
'建立Connection对象
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("address.mdb"))
'建立Command对象
Dim strSql As String
strSql="Delete from users Where id=" & MyDataGrid.DataKeys(CInt(E.Item.ItemIndex))
Dim cmd As New OleDbCommand(strSql, conn)
'执行删除操作
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
'下面先判断是否是最后一页,且只有一行的情况
If myDataGrid.PageCount>1 And myDataGrid.CurrentPageIndex=(myDataGrid.PageCount-1) And myDataGrid.Items.Count=1 Then
lblPageIndex.Text=(myDataGrid.CurrentPageIndex-1) '将新页码保存在标签中
End If
'重新绑定数据
Call myDataBind()
End Sub
'该过程用于添加删除确认框
Sub MyDataGrid_ItemDataBound(sender As Object, e As DataGridItemEventArgs)
'这个判断语句表示,只有对于数据行才执行,对于标题栏和脚注栏则不执行
If e.Item.ItemType<>ListItemType.Header And e.Item.ItemType<>ListItemType.Footer Then
'下面找到删除按钮控件,它其实是一个LinkButton控件
Dim lbtnDel As LinkButton '定义一个LinkButton控件
lbtnDel=e.Item.Cells(1).Controls(0) '它位于第1列第0个控件
'下面添加JavaScript事件
lbtnDel.Attributes.Add("onclick","javascript:return confirm('您真的要删除 " & e.Item.DataItem("name") & " 吗?');")
End If
End Sub
'该过程用于分页
Sub MyDataGrid_Page(sender As Object, e As DataGridPageChangedEventArgs)
lblPageIndex.Text=e.NewPageIndex '将要显示的页码保存在标签中
Call myDataBind() '绑定数据
End Sub
'该过程用于排序
Sub MyDataGrid_Sort(Sender As Object, E As DataGridSortCommandEventArgs)
lblSortField.Text=E.SortExpression '将排序字段保存在标签中
myDataBind() '绑定数据
End Sub
'该过程用来查询数据
Sub Enter_Click(Sender As Object, E As EventArgs)
lblKeyword.Text=Trim(txtKeyword.Text) '将查询关键词保存在标签中
lblPageIndex.Text=0 '查询数据后,原来的页码就有问题了,此时应该显示第0页
myDataBind() '绑定数据
End Sub
'该过程用于绑定数据
Sub myDataBind()
'首先读取3个重要变量,分别用来设置页码、查询和排序
Dim intPageIndex As Integer
Dim strKeyword,strSortField As String
intPageIndex=Convert.ToInt32(lblPageIndex.Text)
strKeyword=lblKeyword.Text
strSortField=lblSortField.Text
'下面根据三个变量绑定数据
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
'下面根据页面变量设置要显示的页面
myDataGrid.CurrentPageIndex = intPageIndex
'下面绑定数据
myDataGrid.DataSource=ds.Tables("users").DefaultView
myDataGrid.DataBind()
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="#aaaadd"
DataKeyField="id"
OnEditCommand="myDataGrid_Edit"
OnCancelCommand="myDataGrid_Cancel"
OnUpdateCommand="myDataGrid_Update"
OnDeleteCommand="myDataGrid_Delete"
OnItemDataBound="MyDataGrid_ItemDataBound"
AllowPaging="True"
PageSize="10"
OnPageIndexChanged="MyDataGrid_Page"
PagerStyle-Mode="NumericPages"
PagerStyle-HorizontalAlign="Right"
AllowSorting="True"
OnSortCommand="MyDataGrid_Sort"
AutoGenerateColumns="False"
runat="server">
<Columns>
<asp:EditCommandColumn EditText="编辑" UpdateText="更新" CancelText="取消" ItemStyle-Wrap="False"/>
<asp:ButtonColumn Text="删除" CommandName="Delete"/>
<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>
<EditItemTemplate>
<asp:Textbox id="txtName" Text='<%# Container.DataItem("name") %>' runat="server"/>
<asp:RequiredFieldValidator id="require1" ControlToValidate="txtName" ErrorMessage="必须输入用户名" runat="server"/>
<asp:RegularExpressionValidator id="Regular1" ControlToValidate="txtName" ValidationExpression="^[\u4e00-\u9fa5]{2,5}$" ErrorMessage="必须输入2位到5位汉字" runat="server" />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="电话" SortExpression="tel">
<ItemTemplate>
<asp:Label id="lblTel" Text='<%# Container.DataItem("tel") %>' runat="server"/>
</ItemTemplate>
<EditItemTemplate>
<asp:Textbox id="txtTel" Text='<%# Container.DataItem("tel") %>' runat="server"/>
<asp:RequiredFieldValidator id="require2" ControlToValidate="txtTel" ErrorMessage="必须输入电话" runat="server"/>
<asp:RegularExpressionValidator id="Regular2" ControlToValidate="txtTel" ValidationExpression="^([0-9]{3,4}-[0-9]{7,8})|([0-9]{11})$" ErrorMessage="电话格式不正确" runat="server" />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="E-mail" SortExpression="email">
<ItemTemplate>
<asp:HyperLink Text='<%# Container.DataItem("email") %>' NavigateUrl='<%# "mailto:" & Container.DataItem("email") %>' runat="server"/>
</ItemTemplate>
<EditItemTemplate>
<asp:Textbox id="txtEmail" Columns="20" Text='<%# Container.DataItem("email") %>' runat="server"/>
<asp:RegularExpressionValidator id="Regular3" ControlToValidate="txtEmail" ValidationExpression="^.{1,}@.{1,}\.[a-zA-Z]{2,3}$" ErrorMessage="E-mail格式不正确" runat="server" />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="简介" SortExpression="intro">
<ItemTemplate>
<asp:Label id="lblIntro" Text='<%# Container.DataItem("intro") %>' runat="server"/>
</ItemTemplate>
<EditItemTemplate>
<asp:Textbox id="txtIntro" TextMode="multiline" Columns="20" Rows="2" Text='<%# Container.DataItem("intro") %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:Label id="lblPageIndex" Text="0" Visible="False" runat="server"/>
<asp:Label id="lblKeyword" Text="" Visible="False" runat="server"/>
<asp:Label id="lblSortField" Text="id" Visible="False" runat="server"/>
</form>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?