登陆注册
8724600000029

第29章 软件构造(8)

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

同类推荐
热门推荐
  • 轻掬红颜泪

    轻掬红颜泪

    台湾作家[祁欢]的免费全本小说《轻掬红颜泪》。
  • 俏妈咪产后恢复一本通

    俏妈咪产后恢复一本通

    本书将传统和现代产后护理概念相揉,从临产期开始到产后的恢复生活,按科学的生理过程进行讲解,并制作出适合每种情况的恢复方案,摆脱你初为新手的恐慌。
  • 重生之虐她一人

    重生之虐她一人

    一次阴谋,让他,获得了重生,变成了英俊潇洒的男生,从此,艳遇不断,道上称王,但他只爱一个她
  • 我不想当你手下

    我不想当你手下

    当一个人被天选定的时候,很幸运也很倒霉。
  • 伏藏

    伏藏

    月下,头生骨刺的蛟龙缓缓自湖底游出,晃动周身铁链,俯视湖边白衣少年,轰隆隆开口:你要什么?少年坚定的答道:力量。无数年后,寿元将近的蛟龙仰视高高在上的白衣谪仙,低下了峥嵘龙头,开口道:请仙君赐我悠久的生命。谪仙低头俯视,清冷的面容和无数年前相比丝毫不变,“准。”——这是一个少年追求力量和长生的故事。
  • 公会

    公会

    杀人难么?几千块的黑星、喷子,几十块的汽油,十几块的刀,几块的锥子,一段结实的绳子...如果想象力足够丰富,成本定可以被压的更低,比如,地上随手捡到的一块石头,所以,工具并不是问题。可面对轻则无期重则枪毙的结果,还有人敢么?有...
  • 冷王宠:狂傲医妃

    冷王宠:狂傲医妃

    血樱,二十一世纪的金牌杀手,前世被队友背叛,遭组织围剿陨落;再次睁眼,她是青昭国被血洗的将军府嫡出大小姐,爷爷父亲遭奸人设计战死沙场;将军府被无故惨灭;母亲重伤昏迷十年;身负血海深仇!她云淡风轻,只护她所在乎的人;她生杀予夺,一步步揭开灭府之谜;她翻云覆海,纤纤素手执掌乾坤!而他,云凌国战神王爷,擎天大陆神秘暗阁阁主。他清冷无情,却唯独宠她入骨;他杀伐果断,却唯独对她柔情似水;他绝世强者,却甘愿为她低头乞求!他步步为营诱取她心,她步步沦陷坠入情网。当风轻云淡的女子遇上邪魅腹黑的王爷,谱写如何的一场旷世情缘!
  • 大佬自我修养

    大佬自我修养

    在垃圾堆里面醒来,我是谁?我在哪?我不是出来写生吗?不该是个青山绿水的地方?我安慰自己这是梦,继续闭眼躺下。——————————某某贵妇太太一脸鄙夷道:“给你一千万,离开我儿子!”谭笑轻抬眼眸道:“不够!再加点……”某男叼着眼,轻瞟了一眼道:“我看不上你,离我远点!”谭笑苦笑道:“我眼还没瞎?谁给你自信?”本文女主性格很极端,不爽就怼!他一个冷面阴沉的男人,身份多变,钱多到花不完。本该是两条平行线却因为一个事故有了交点。从此她撩美男,他截胡,从此走向万劫不复……
  • 学园之一方通行

    学园之一方通行

    一方通行在经过魔禁22卷以后,被神秘的天使给杀死。在经过一个神秘的空间,再次复活到魔禁最开始的时间中的故事。再次化身为恶又怎么样?只要能保护珍重之物,无论多么卑鄙,多么邪恶,甚至没有人性又怎样?无论怎么样地代价本大爷都不怕付出,只要能保护那个孩子。_________by一方通行PS:作者君,乃无节操之人。周更、月更、以及年更都有可能。绝不TJ,务必不要期待。
  • 魔主剑世

    魔主剑世

    一位魔头死后转生成一把剑,为见识各种有趣的事而努力奋斗的故事。