5)CustomValidator控件
CustomValidator控件用于执行用户自定义的验证,这种校验既可以是服务器端的也可以是客户端的,下面的代码就是使用客户端验证邮编的例子。
Postal Code:
ControlToValidate=”TextBox1”ErrorMessage=”CustomValidator”
ClientValidationFunction=”ClientValidate”>;
6)ValidationSummary控件
这个控件会将页面中所有的校验错误输出为一个列表,列表的显示方式由DisplayMode属性设置。
Age:
ControlToValidate=”TxtAge”ErrorMessage=”Age Error!”
Display=”None”>;
Postal Code:
>;
HeaderText=”You must enter a value in the following fields:”>;
7.使用DataGrid实现数据操作功能(添加、删除、更新、排序、分页)
DataGridWeb服务器控件以表格式布局显示数据。默认情况下,DataGrid以只读模式显示数据,但是DataGrid也能够在运行时自动在可编辑控件中显示数据。下面提供的是一个管理人员维护界面的例子,其中实现了DataGrid的各种操作。
1)添加列
首先选中DataGrid,单击右键,选择“属性生成器”。单击左边的“列”,可以来增加要显示的列。我们可以看到有四种列:绑定列、按钮列、超级链接列和模板列。这里介绍绑定列和模板列,绑定列用来显示只读数据;按钮列和超级链接列的功能都可以用模板列来实现。
添加五个绑定列,从“可选列”选中“绑定列”,然后添加五个“绑定列”到“选定的列”中,分别是用户id、账户、密码、姓名、用户类型。其中用户id是每条记录的主键,用来定位每条记录,不显示这个字段,在“属性生成器”中把这一列的“可见”选项取消。并且为每一个绑定列在其下面的“绑定字段”中输入数据库中对应的列名称。
添加两个模板列,关闭“属性生成器”。
2)编辑模板列
选中DataGrid,单击右键,选择“编辑模板”。
在其中的ItemTemplate列中加入一个LinkButton按钮。
LinkButton属性设置:
CommandName:update
Text:更新
同样编辑第二个模板列,也在其中的ItemTemplate列中加入一个LinkButton按钮,属性设置:
CommandName:delete
Text:删除
3)在代码中为DataGrid添加数据源
Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load
’在此处放置初始化页的用户代码If Not Me.Page.IsPostBack Then
’填充datagrid
Me.binddata()
Me.Panel1.Visible=True
Me.PanelUpdate.Visible=False
Me.PanelInsert.Visible=False
End If
End Sub
Private Sub binddata()
Dim dt As DataTable
dt=near.T_OperatorCollection.GetAllAsDataTable
Me.DataGrid1.DataSource=dt
Me.DataGrid1.DataBind()
End Sub
代码中的binddata()过程用来为DataGrid添加数据源。
4)为两个模板列中的LinkButton添加处理事件
Private Sub DeleteAndUpdate(ByVal source As Object,ByVal e As System.Web.UI. WebControls.
DataGridCommandEventArgs)Handles
DataGrid1.ItemCommand
If e.CommandName=”update”Then
TryDim row As T_OperatorRow=near.T_OperatorCollection.GetByPrimaryKey(Int(e.Item.Cells(4).Text))
Me.txtAccount.Text=row.OperatorAccount
Me.txtpassword.Text=row.Password
If row.OperatorType=”管理员”Then
Me.DropDownList1.SelectedIndex=0
Else
Me.DropDownList1.SelectedIndex=1
End If
Me.txtname.Text=row.RealName
Cache(”OperatorKey”)=row.OperatorID
Me.PanelUpdate.Visible=True
Me.PanelInsert.Visible=False
Me.Panel1.Visible=False
Catch ex As Exception
End Try
End If
If e.CommandName=”delete”Then
Try
near.T_OperatorCollection.DeleteByPrimaryKey(e.Item.Cells(4).Text)
Me.binddata()
Catch ex As Exception
End Try
End If
End Sub
以上的程序中,因为前面已经给两个LinkButton设置了CommandName属性,这里用e.CommandName来区别用户单击的是“更新”按钮还是“删除”按钮。这里先要说明的是这里有三个panel,分别放置DataGrid显示区域,更新操作区域,增加操作区域。如果用户单击的是“更新”按钮,我们只显示更新操作区域,其他区域隐藏。
5)为LinkButton添加确认
对于模板列中的“删除”按钮,要为这个LinkButton添加确认,也就是用户在单击“删除”按钮的时候,先要进行确认,经过用户同意后,再执行删除操作,以免错误删除某条记录。
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object,ByVal e AsSystem.Web.UI. WebControls.DataGridItemEventArgs)Handles DataGrid1.ItemDataBoundIf e.Item.ItemType<;>; ListItemType.Footer And e.Item.ItemType<;>; ListItemType.
Header Then
Dim delbutton As LinkButton=CType(e.Item.Cells(6).Controls(1),LinkButton) delbutton.
Attributes(”onclick”)=”java:return confirm("确认删除吗?")”
End If
End Sub
6)为DataGrid添加分页功能
再次进入DataGrid的“属性生成器”,选择左边的“分页”。
然后为分页添加处理代码:
Private Sub DataGrid1_PageIndexChanged(ByVal source As Object,ByVal e As System.Web.UI. WebControls.DataGridPageChangedEventArgs)
Handles DataGrid1.PageIndexChanged
Me.DataGrid1.CurrentPageIndex=e.NewPageIndex
Me.binddata()
End Sub
注意:这里不要忘记重新绑定数据。
7)为更新区域和增加区域编写处理代码
这里用的思路是使用三个不同的panel分别负责“显示”、“更新”和“增加”功能,三个区域在同一个页面交替显示,使用非常方便。
更新区域实现代码:
"更新的确定
Private Sub btnConfirm_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles btnConfirm.Click
If Not Page.IsValid Then
Exit Sub
End If
’进行更新
Dim row As New T_OperatorRow
row.OperatorID=Cache(”OperatorKey”)
row.OperatorAccount=Me.txtAccount.Text.Trim
row.Password=Me.txtpassword.Text.Trim
row.RealName=Me.txtname.Text.Trim
row.OperatorType=Me.DropDownList1.SelectedItem.Text
Try
Me.near.T_OperatorCollection.Update(row)
Me.binddata()
Me.Panel1.Visible=True
Me.PanelInsert.Visible=False
Me.PanelUpdate.Visible=False
Catch ex As Exception
End Try
End Sub
实现代码:
"插入的存在,验证是否存在相同的账户
Private Function InsertAccountExist(ByVal account As String) As Boolean