登陆注册
8724600000032

第32章 软件构造(11)

Dim dt As DataTable=sql.ExecuteDataset(SqlHelper.ConnectionString,CommandType.Text,”select AccountName from T_Account where AccountName="”&ClientName&”"”).Tables(0)If dt Is Nothing Then

Return False

End If

If dt.Rows.Count>=1 Then

Return True

Else

Return False

End If

End Function

’调用此函数,插入注册信息

Public Function SaveData() As Boolean

’判断是否已经存在登录名

If NameExist(EmailTextBox.Text) Then

EmailUniqueCustomValidator.IsValid=False

End If

If Not Page.IsValid Then

Exit Function

End If

Dim ne As New Nearfar

Try

’调用一个存储过程,插入到三个表中

Dim mAcc As New T_AccountRow

With mAcc

.AccountName=EmailTextBox.Text

.Password=PasswordTextBox.Text

.PwdQuestion=DropDownList1.SelectedItem.Text

.PwdAnswer=AddressTextBox.Text

.AccountTime=Now.Date

End With

ne.T_AccountCollection.Insert(mAcc)

Return True

Catch ex As Exception

Return False

End Try

End Function

6.6.3如何实现后台数据维护

后台数据维护一般主要完成基础数据的查询、删除、更新、插入操作,这种类型的操作模式有一定的通用性。因而非常有必要加以总结和推广。

在ASP.NET中一般可以用DataGrid控件来展示数据,用文本框来录入数据。所以总体思路是,使用两个panel,把整个界面按功能分成两个区域。一个是完成查询和删除功能的区域,简称为查询区域,该区域也是默认显示的区域,同时在该区域还有更新和添加的链接。我们用另外一个panel作为更新和录入区,简称为录入区。

在显示区,用DataGrid展示查询的所有数据。使用DataGrid可以方便地实现分页显示数据,按照某一标题排序等功能。每一行数据,都有相应的删除按钮,单击“删除”可直接删除该行数据,单击更新或添加按钮,则网页显示录入区,隐藏查询区。

网页刚启动时,也就是在网页的Pageload事件中,显示查询区,隐藏录入区,并读取数据呈现在DataGrid中。当单击“添加”时,隐藏查询区,显示录入区,让用户录入一条新的数据。当单击“更新”时,流程与单击“添加”一样,不同之处是,单击“更新”多做了一步操作,它将该条记录的数据自动赋给录入区域中相应的文本框。关于网页的具体实现参见以下代码中的提示。

Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load

’在此处放置初始化页的用户代码

ShowQuery()

If Not Me.IsPostBack Then

BindGrid()

End If

End Sub

’将数据赋给datagrid

Private Sub BindGrid()

Dim dv As DataView

dv=MyBase.MyNearFar.T_HelpCollection.GetAllAsDataTable.DefaultView

Me.dgHelp.DataSource=dv

Me.dgHelp.DataBind()

Cache(”ds”)=Me.dgHelp.DataSource

End Sub

’将数据赋给datagrid,并按照传入的列排序

Private Sub BindGrid(ByVal SortExpression As String)

Dim dv As DataView

dv=MyBase.MyNearFar.T_HelpCollection.GetAllAsDataTable.DefaultView

dv.Sort=SortExpression

Me.dgHelp.DataSource=dv

Me.dgHelp.DataBind()

Cache(”ds”)=Me.dgHelp.DataSource

End Sub

’删除一行数据

Private Sub dgHelp_DeleteCommand(ByVal source As Object,ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)Handles dgHelp.DeleteCommand MyBase.MyNearFar.T_HelpCollection.DeleteByPrimaryKey(Me.dgHelp.DataKeys(CInt(e.Item.ItemIndex)))

BindGrid()

End Sub

’响应用户单击更新的事件

Private Sub dgHelp_ItemCommand(ByVal source As Object,ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgHelp.ItemCommand

If LCase(e.CommandName).Equals(”select”) Then

’将选中的行的数据付给录入区

Dim rv As T_HelpRow

rv=MyBase.MyNearFar.T_HelpCollection.GetByPrimaryKey

(Me.dgHelp.DataKeys(CInt(e.Item.ItemIndex)))

With rv

Me.txthelpcontent.Text=.HelpContent

Me.txthelptitle.Text=.HelpTitle

Me.dropdwnmodule.SelectedValue=.ModuleName

Me.dropdownpriority.SelectedValue=.Priority.ToString

Cache(”helpid”)=.HelpID

End With

ShowAdd()

Cache(”state”)=”update”

End If

End Sub

’验证录入的值是否合法

Private Function validatePage()As Boolean

If Me.txthelptitle.Text=””Then

showerror(”标题不能为空!”)

Return False

End If

If Me.txthelpcontent.Text=””Then

showerror(”标题不能为空!”)

Return False

End If

Return True

End Function

’清除录入区的相应控件的值

Private Sub ClearControl()

Me.txthelpcontent.Text=””

Me.txthelptitle.Text=””

Me.dropdownpriority.SelectedIndex=0

Me.dropdwnmodule.SelectedIndex=0

End Sub

’响应用户单击确定事件,如果当前状态是插入,则执行插入操作

’如果当前状态是更新,则执行更新操作

Private Sub btnOk_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles btnOk.Click

Dim nerow As New T_HelpRow

If validatePage()Then

nerow.HelpTitle=Me.txthelptitle.Text

nerow.HelpContent=Me.txthelpcontent.Text

nerow.ModuleName=Me.dropdwnmodule.SelectedItem.ToString

nerow.Priority=CInt(Me.dropdownpriority.SelectedItem.Text)

nerow.PublishTime=Now.ToUniversalTime

If Cache(”state”)=”update”Then

nerow.HelpID=Cache(”helpid”)

MyBase.MyNearFar.T_HelpCollection.Update(nerow)

Else

MyBase.MyNearFar.T_HelpCollection.Insert(nerow)

ClearControl()

End If

Else

ShowAdd()

Exit Sub

End If

BindGrid()

End Sub

Public Function myGet(ByVal str As String,ByVal mylen As Int16) As String

If Len(str)> mylen Then

Return(Left(str,mylen)+”....”)

Else

Return str

End If

End Function

’对用户单击”添加”事件的响应

Private Sub btnAddLink_Click (ByVal sender As System.Object,ByVal e As System.EventArgs) Handles btnAddLink.Click

ShowAdd()

Cache(”state”)=”add”

End Sub

’实现datagrid的分页显示

Private Sub dgHelp_PageIndexChanged (ByVal source As Object,ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgHelp.PageIndexChanged

Me.dgHelp.CurrentPageIndex=e.NewPageIndex

BindGrid(Cache(”CurrentSortExpression”))

End Sub

’显示录入区域,隐藏查询区域

Private Sub ShowAdd()

Me.panQuery.Visible=False

Me.panAdd.Visible=True

"Me.panAdd.Style.Item(”Top”)=0

End Sub

’显示查询区域,隐藏录入区域

Private Sub ShowQuery()

Me.panQuery.Visible=True

Me.panAdd.Visible=False"Me.panQuery.Style.Item(”top”)=0

End Sub

’实现排序功能

Private Sub dgHelp_SortCommand(ByVal source As Object,ByVal e As System.Web.UI.Web—Controls.DataGridSortCommandEventArgs) Handles dgHelp.SortCommand

If Cache(”CurrentSortExpression”)=e.SortExpression Then

Cache(”CurrentSortExpression”)=Reverse(Cache(”CurrentSortExpression”))

Else

Cache(”CurrentSortExpression”)=e.SortExpression

End If

BindGrid(Cache(”CurrentSortExpression”))

End Sub

’实现倒排序

Private Function Reverse(ByVal str As String) As String

Return str+”desc”

End Function

’对录入区域返回按钮的响应

Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)

同类推荐
  • 云计算和现代远程教育

    云计算和现代远程教育

    本书介绍了云计算知识、云计算的特性、云计算技术、云计算中的访问云、云计算中的云存储、云计算在远程教育中的应用等内容。
  • 成为淘宝创业的超级毕业生

    成为淘宝创业的超级毕业生

    本书讲述如何通过淘宝创业将大学在校生打造成为“超级毕业生”。主要内容包括大学生从事淘宝创业的理论基础、学以致用的操作指南,以及可资借鉴的案例。书中的理念篇可供对创业教育感兴趣的高校教师参考;实战篇提出的“淘宝十二招”,操作简单,易学易用;案例篇讲述了十位成功在校创业大学生的故事,主要供学生参考。读完本书,相信凡是关注大学教育者或希望通过淘宝创业的大学生,皆能从中获得启发,对创业从无心变有心,从有心变行动,亲身投入或参与到这个伟大的事业中来。
  • 条形码技术与应用

    条形码技术与应用

    条形码是一种可供电子仪器自动识别的标准符号,是由一组黑白相间、粗细不同的条、空符号按一定编码规则排列组成的标记,用以表示一定的信息,确认某个物体或规定它的移动,能正确快速地为产、供、销各环节在采集、处理和交换信息时提供标识。
  • 网络广告经纪人

    网络广告经纪人

    本书为网络广告经纪人培训认证的指定教材,该认证是商务部中国商务广告协会和信息产业部中国电子商会联合推出的,旨在为国家造就和培养出一大批网络广告梯队型人才。该教材包括网络广告经纪人的介绍和发展趋势,以及网络广告的原理、策划、设计、制作、发布与交换、效果评估、管理,以及网络广告营销的国内外最新的成功案例,还提供了一些常用的网络广告制作工具。本教材适合助理网络广告经纪人和网络广告经纪人层次使用。也可作为高校广告、电子商务等专业的教材。
热门推荐
  • 当噩梦醒来时

    当噩梦醒来时

    父母突遭意外双双身亡,平凡女大学生噩梦频频,身边人意外连连,偶遇神秘帅哥,可爱毒舌小正太,三人组畅游大江南北顺便探案。一个大千世界角落里人情冷暖,试图治愈所有人的故事。
  • 灯火下有你也有我

    灯火下有你也有我

    三月的春风,拂过你的脸曾经的我们,如今还在吗?又一年春,这树下,你还在吗?
  • 一种美味

    一种美味

    《冰心奖获奖作家精品书系》是一套由获奖名家倾情打造的,写给中国少年儿童的小小说文集。所选作品在注重文学性和可读性的同时,更注重作品的价值取向。本丛书既可作为青年一代文学素养训练的读本,又可作为学生作文写作的范文,是通往语文课堂的“直达快车”。《一种美味》是冰心奖获奖作家的获奖作品集,精选了“微型小说之父”刘国芳,冰心奖、金麻雀奖的获奖作家王培静,连续三届获中国微型小说学会作品年度评选一等奖,并有多篇佳作被收入中学教材的曹德权等作家的作品。作品构思精巧而又不失生活常态,情节多变离奇却不荒诞,情理之中多见心灵震撼之笔,又都带有发人深省的思想内涵。一种美味,是留存在嘴角的香甜,是生发于心的喜悦,是映在泪水中的幸福。如雪中的舞者,用轮椅在雪地上划出一道道优美的曲线;又如睡在上铺的女孩,无视非议,用善良温暖人心。
  • 雾霭降临

    雾霭降临

    一缕幽雾弥漫人间,地球掀起神秘一角。刚退伍归来的青年梁风碰巧遇到了这一切,从此命运无法逆转。他明白,从那个诡异的晚上开始,自己就在走向深渊,一步接一步,越来越近……附:粉丝群号:252346373
  • 仙界交换生

    仙界交换生

    人族天君三千年寿辰之际,御丹真人座下药童将御丹真人准备的贺礼宝丹炼废,天君仁慈,将其作为仙界交换生送入轮回……药童机缘巧合之下获得黑色令牌,并成功轮回转世为武安侯府的公子,随着一步步的的成长,等待着他的命运?使命?善?恶?他到底该如何选择……
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 所谓你我平凡爱

    所谓你我平凡爱

    灰姑娘逆袭的结局,被默认了无数年,可是现实中,灰姑娘还是灰姑娘啊,她们的平凡爱情仍需要被尊重,她们虽平凡但仍不苟且的人生,也同样值得被歌颂,感谢平凡的我们每个人。所谓你我,所谓爱情
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 病娇小姐傻王爷

    病娇小姐傻王爷

    不知道自己身份的21世纪毒后,穿越成了刚出生的小婴儿,自出生时就带着剧毒,被人收入师门,还跟一个一个三岁失足掉入湖中装傻的三王爷成了师兄妹,墨风君一边寻找自己的身世,一边和傻王爷纠缠不清………