登陆注册
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)

同类推荐
  • 计算机应用基础案例教程

    计算机应用基础案例教程

    本书是根据教育部对高等院校计算机公共基础课程的基本要求,结合计算机技术的最新发展及高职高专类院校计算机基础课程改革的最新动向编写而成。其主要内容包括计算机基础知识、WindowsXP操作系统、Word2003文字处理软件、Excel2003电子表格软件、PowerPoint2003演示文稿制作软件、计算机网络与安全及常用工具软件的使用。本书将理论知识与项目实践相结合,既对理论有较为系统全面的讲解,又通过案例突出了操作技能的培养。本书内容新颖,体系结构合理,可作为高职高专学校、成人高等学校的计算机公共基础课教材,也可以作为广大计算机爱好者的自学参考书。
  • 中文版AutoCAD2005建筑绘图精讲精学

    中文版AutoCAD2005建筑绘图精讲精学

    本书从中文版AutoCAD2005建筑绘图的基础进行介绍,讲解了建筑绘图的环境设置、二维建筑图形的绘制、二维建筑及装饰图形的编辑、建筑绘图中的文字标注和图形查询、建筑装潢平面图中的尺寸标注、建筑绘图中图块的应用、建筑平面图的绘制、建筑立面图的绘制、建筑剖面图的绘制、建筑绘图中的三维造型、三维建筑模型绘制及建筑图纸的布局与打印输出等内容。
  • 如何建设网站

    如何建设网站

    本书以问答的方式介绍了建设网站的基本知识,内容包括:网站设计的八个步骤、建设网站需要掌握的工具软件、网页中插入图像、在网页中隐藏内容等。
  • 下一代互联网

    下一代互联网

    本书系统介绍了下一代互联网的进展情况,包括下一代互联网的概念解析,国内外下一代互联网的最新发展情况,下一代互联网的关键技术进展,以及各国发展下一代互联网的政策计划。最后分析了下一代互联网对未来社会的影响,提出我国发展下一代互联网的政策建议等。全书共6章,包括互联网发展历史和现状,下一代互联网基本概念,下一代互联网研究最新进展,下一代互联网发展现状,我国发展下一代互联网现状,发展下一代互联网战略建议。
热门推荐
  • 钓鱼技巧大全(居家生活宝典)

    钓鱼技巧大全(居家生活宝典)

    随着生活水平的不断提高,人们越来越重视生活质量,希望在温馨舒适的环境中享受生活的乐趣。鉴于此,我们编撰了《居家生活宝典》丛书。该丛书包括《四季养花一本通》、《家庭养花万事通》、《钓鱼技巧大全》、《家庭养狗一本通》、《家庭养猫一本通》、《生活小窍门》、《针灸按摩一本通》、《糖尿病食疗与养生》、《高血压食疗与养生》和《心脏病食疗与养生》10册,对现代人最关心、最敏感的问题作了全面、详尽、科学、完备的阐述,是每一个现代家庭必不可少的良师益友。《居家生活宝典》的宗旨是做您的生活顾问,让您对家的感觉更好,给您紧张而忙碌的生活增添休闲的色彩。
  • 传奇火山

    传奇火山

    一个重生的学子,泰明,站在火山口,投入火山中,那个钢柔并济、豪情绽放,繁荣昌盛的传奇巨大火山世界。猫男、独目犬,界灵日记隆重搞笑登场,都经历着神秘的火山“重启”。(重启,是故事独家特色,请观正文。)
  • 星云圣传

    星云圣传

    先天心脏病的星云死后。灵魂穿越到了两亿年前的侏罗纪。星云很想把那些古生物学家都掐死,谁说人类的起源才几十、几百万年?当然,如果他能复活的话。两亿年前侏罗纪,来自猎户座的神武、圣星、威武三大统治神族,以及不甘被统治的附庸族之间矛盾丛生,战乱不止。渐渐崛起的恐龙魔兽,也是蠢蠢欲动,和人类争夺着起盘古大陆的统治权。而星云的到来,更是将这一切矛盾彻底激化,他该何去何从?一副记载了远古谜团,物竞天择,生存灭亡的长篇历史神话卷轴即将展开。
  • 天道维度空间

    天道维度空间

    超维世界和天道维度空间的起源之秘天道树遍布各大超维世界的原因无数个野心勃勃的高级维度世界,维度争霸赛背面的真实含义究竟为何在一个大争之世这些个超维世界是否像是表面那样平和安静呢...
  • 悍妻嫁到:斗破大宅门

    悍妻嫁到:斗破大宅门

    一纸婚书,继母逼嫁,她给迫嫁进高门侯府,卷入这个看不见硝烟的战场之中,宅院深深,她步步为营,却步步惊心。长辈刁难,她游刃有余;妯娌陷害,她化险为夷。然而,她嫁的那个傻子夫君,却是她今生都逃不开的劫……他还是傻子时,为她铺十里红妆,许给她一世宠爱;他聪明睿智后,在他怀中展颜欢笑的却另有她人。一场错乱的姻缘,一次爱情的博弈,他们从相爱到相杀,如何还能执手天涯?【纯属虚构,请勿模仿】"
  • 天行

    天行

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

    天行

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

    萌妃乖乖:邪王猛追小嫡妃

    【正文+番外完结】一朝穿越,她成了凤元王朝的草包公主?长的比花娇,名声比屎臭,位置还没坐热,便被贬回安伯侯府不受宠的嫡小姐。姨娘阴毒,庶妹伪善,生父更是冷血无情……个个恨不得对她杀之后快,却不知扮猪吃老虎是她的拿手好戏,她早已经不是原来的那个她!某日夜黑风高之时,她好心搭了一把手,来年她收获了一个美貌绝伦的腹黑王爷。初时,她得意洋洋的捏着他的双颊逼迫:“宝贝,叫一声姐姐听听!”后来,他挑起她的下颌,眯着眼诱哄:“心肝,叫一声夫君听听!”这是一个老男人和一个小女人之间那些不得不说的事。
  • 重生嫡女:高冷王爷追妻记

    重生嫡女:高冷王爷追妻记

    前世,她,沧月帝国左丞相嫡女,父亲为左丞相,母亲为护国大将军独女,本是天之娇女,只因十三岁那年因母亲失踪,错信姨娘,疏远了本疼爱自己的亲人,与渣男成婚当日,渣妹告知所有事情真相,悔不当初……自尽而死……今世,有缘涅槃重生,誓要将前世欠她的统统拿回来,姨娘陷害,原封不动的还回去;庶妹欲想毁自己清白,怎么动我怎么还回去;渣男求婚,霸气一言:“有多远滚多远……”[本文纯属虚构,若有雷同,敬请见谅]
  • 末世之修罗末世

    末世之修罗末世

    末世来袭,一切情感都被踩在脚下