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

同类推荐
  • 科学伴你行-神奇的通信技术

    科学伴你行-神奇的通信技术

    在日常生活中,有时人们要借助于小旗子来进行通信联络,比如,开运动会时,发令员常常要用小旗子与计时员联系;当你乘坐火车进入车站时,都会看到车站工作人员拿着红色和绿色的小旗子在站台上进行指挥;在战争中,打出白色旗子表示投降,插上红色旗子表明胜利;航行在茫茫大海上的船只,双方船员会凭不同旗帜组成的标志,来了解对方的意思。以上种种用小旗子来“说话”的通信方式就叫做旗语。
  • 研究性学习丛书-电脑知识

    研究性学习丛书-电脑知识

    本书对电脑知识有一个全面详细的介绍,会对读者的电脑知识进行提高。
  • 三维动画审美谈

    三维动画审美谈

    数字时代,美的标准充满更多的不确定性。而三维动画以数字图像形式成为这个图时代的代表。三维动画及三维图像不仅仅是由于应用了仿真数字图像技术而带来的虚拟空间,还有更多的是由三维图像技术所引发或引导的被扩展的图像技术,这些技术无不应用在现代视觉设计领域的各个方面,并且,由此引起社会的追热,引起审美观念的改变。这些改变是在进行中的,变化中的,也是在发展中的。对于未知的美,我们做的只是追寻和记录,我们不知道以后的美将会是什么样,尽管我们苦苦追寻,孜孜探讨,同时也在默默审视。我们在追寻中享受美,在探讨中认知美,在审视中体验美……
  • 《Internet实用技术》作业集

    《Internet实用技术》作业集

    随着计算机应用的普及和社会信息化水平的提高,Internet已走进我们的生活。《Internet实用技术》这门课将带领我们走进网络的神秘殿堂,让我们认识网络,了解网络,进而学会使用网络,维护网络。其范围涵盖了在授课过程中所讲授的内容,题型多样,内容丰富,并附有两套模拟题,最后附有答案。学生可按照课程进度做习题来巩固和掌握知识。本作业集由李琳编写,由西北工业大学网络教育学院负责组稿和审定。因为时间仓促,水平有限,错误和不当之处在所难免,敬请读者批评指正。
  • 计算机与人工智能(科学新知丛书)

    计算机与人工智能(科学新知丛书)

    本书是专门为中小学生编写的科普读物。全书共分八个部分,分别就计算机诞生的历程,计算机的种类、构造、作用及其发展趋势等方面进行了详尽的论述,全书论述深入浅出,行文活泼流畅。为本书的主要读者——广大的中小学生朋友认识计算机、了解计算机和掌握计算机提供了一把钥匙,是新时期中小学生开展素质教育不可多得的科普读物,中小学生家长及教师阅读此书也能从中获得有益的启示和感悟。
热门推荐
  • 夜空下的魔法师

    夜空下的魔法师

    他有一个少见的名字——阿夜。但他的另一个称号却在他的故乡小城中广为流传,那就是——“灾星”。他不但自己栽,还会连累着身边的所有人一起栽!半径一公里之内,保管你房倒屋塌人仰马翻鸡飞狗跳!让你分不清他到底是阳光,还是他妹的死光……而就在大骑士屠龙创世的百年之后,十八岁的灾星夜带着一位奇人所送给他的奇怪“礼物”,踏上了参考皇家魔法院的跌宕旅途。从此将他的“灾星光环”辐射至了整个泰兰大陆,更是使得一场足以颠覆整个大陆命运的纷争就此拉开了帷幕……
  • 极品村支书

    极品村支书

    王者归来,纵横都市
  • 财富的魅力

    财富的魅力

    本书通过155个小故事,告诉读者爱财无伤品德,无论你是商业巨鳄还是街边小贩,通过聪明睿智获得财富,都是可以受人尊重、敬佩的。一个不甘平庸、积极进取的人,能够从一粒尘埃中发现商机,获得财富;相反,一个碌碌无为,得过且过的人,即使有巨大的市场蛋糕摆在面前,只会置若罔闻,错失良机,穷困潦倒终身。其实财富就在每个人身边,需要你拥有敏锐的洞察力、细微的观察力、敏感的商业头脑、精明的经营本领。全书以丰富的实践来证明,用自己的智慧来创造财富,建设更加和谐的氛围,为社会多做贡献。
  • 猝不及防的想遇

    猝不及防的想遇

    记者:夜辰,你对在你这个年龄拿到影帝,成为最年轻的影帝有什么要说的吗?夜辰:没什么好说的,凭实力拿的粉丝:阿辰还是这么高冷,捂脸夜辰一个高冷少年,娱乐圈人评价面瘫脸,年仅16就拿到了影帝,在娱乐圈掀起一片风云,后来人们发现他的马甲,一个接一个掉。
  • 管理成熟度评价理论与方法

    管理成熟度评价理论与方法

    本书介绍了管理成熟度评价的相关内容,具体内容包括:管理成熟度是什么玩意,管理成熟度如何评价,管理成熟度提升与管理等。
  • 狩猎者的成长

    狩猎者的成长

    俩个没有知识经验,实践经验在业界闯出一片天,成为商业界猎头的故事。
  • 苍神冥祭

    苍神冥祭

    东疆大地,正派林立,一个个强大的灵师驾驭他们的妖灵征战天下!玄灵师,地灵师,天灵师……神兽级的炎龙,万火噬天!冰川下的巨魔,潜海腾渊!凶恶滔天的魑魅魍魉……高高再上的圣宗,魔枭,嗜血妖族…另外,本书很纯洁,非爽文小白。带机智、勇敢,带点悬疑,带点邪异。希望你喜欢就收藏吧!
  • 网游之混沌圣皇

    网游之混沌圣皇

    末日降临后,人类文明宣告终结!劫后余生的幸存者逃离到华夏国开发的《神话世界》从此,一个浑浑噩噩的宅男踏上了通天之路!充满血腥的修罗战场,神秘阴森的夜影村,令人沸腾的上古神迹,即将出世的十大神器!正所谓,乱世出英雄,末世修圣皇!这一切,人类将会为荣誉而战!准备好了吗?让我们一起进入神话时代!(每天准时2更,请收藏,推荐,谢谢!)
  • 三和大神的那些事

    三和大神的那些事

    简介:主角怀着冲出家乡闯一番事业的激情,单独来到深圳打工。却发现被一股神秘的力量操控,逐渐成为三和大神的故事。期间年少无知的他遇上传奇人物红姐,并第一次修车的青葱经历。期间主角是如何上一天班休息好几天的操作?这般窒息的操作究竟是因为什么原因。让我们走进科学来探讨一下吧。
  • 吃鸡之剑与魔法

    吃鸡之剑与魔法

    腐蚀一切的黑暗不断缩圈,在被黑暗中的恶魔吞噬之前,唯有向着残存的光明之地,杀戮所有的敌人才能最终幸存。在这片战场上没有枪械,你能依靠的,唯有剑与魔法。