机房收费系统之DataGridView

在我们平时的学习中不少见用到将数据库与界面连接的一个控件——DataGridView,在我们敲第一遍机房的时候我们用到的相似的控件是——MSHFlexGrid,随着学习的深入,发现我们用到的平台越来越人性化了,现在用的VS2013的控件——DataGridView可以直接和数据库相连接,今天重点说一下DataGridView删除行并同时更新数据库功能的实现:

这是删除前的效果,我们要实现的是如图的效果,左图为界面,右图为数据库中的数据,但是还需要考虑要删除的用户是否正在登录,如果正在登录,则不能删除。

 

删除后的效果:

  

实现这个功能主要是在U层加了一个方法,B层、D层和其他删除时是大相径庭的,下面看一下代码实现部分:

1、D层:

  Public Function DelUser(enUser As UserInfoEntity) As Integer Implements IUserInfo.DelUser
        Dim cmdText As String
        Dim sqlParams As SqlParameter()
        Dim sqlHelper As New SqlHelper
        Dim intResult As Integer

        cmdText = "Delete from T_UserInfo where U[email protected]"
        sqlParams = {New SqlParameter("@UserID", enUser.UserID)}
        intResult = sqlHelper.ExecuteAddDelUpdate(cmdText, CommandType.Text, sqlParams)

        Return intResult
    End Function

2、B层:

 Public Function DelUser(ByVal enUser As UserInfoEntity) As Integer
        Dim iUserInfo As IUserInfo
        Dim intResult As Integer

        iUserInfo = factory.CreateSelectUser()
        intResult = iUserInfo.DelUser(enUser)

        Return intResult

    End Function

3、U层:

a.定义一个删除行的过程:

 ‘‘‘ <summary>
    ‘‘‘ 删除用户的自定义过程
    ‘‘‘ </summary>
    ‘‘‘ <remarks></remarks>
    Public Sub DelUser()
        Dim intRows As Integer = DataGridView1.SelectedRows.Count ‘判断选中的行数
        Dim intDelRow As Integer
        Dim enUser As New UserInfoEntity
        Dim bllAddDelUser As New AddDelUserBLL
        Dim strUserID As String ‘获取选中数据的第一列值
        Dim intResult As Integer

        If intRows > 0 Then
            ‘从下往上删除,防止漏行
            For intDelRow = intRows To 1 Step -1
                strUserID = DataGridView1.SelectedRows(intDelRow - 1).Cells("UserIDDataGridViewTextBoxColumn").Value.ToString()
                ‘如果该用户正在工作,则不能删除
                If pubshare.strUserName = strUserID.Trim() Then
                    MsgBox("该用户正在工作,不能删除", vbOKOnly + vbExclamation, "提示")
                    Exit Sub
                Else
                    ‘将要删除的用户ID传给实体
                    enUser.UserID = strUserID
                    ‘同时将该实体的信息从数据库中删除
                    intResult = bllAddDelUser.DelUser(enUser)
                    If intResult > 0 Then
                        ‘将数据库中所删除的对应的信息在dataGridview表中也删除
                        DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(intDelRow - 1).Index)
                        MsgBox("删除成功", vbOKOnly + vbExclamation, "提示")
                    Else
                        MsgBox("删除失败", vbOKOnly + vbExclamation, "提示")
                    End If
                End If

            Next
        Else
            DataGridView1.Rows.Clear()
        End If
    End Sub

b.通过点击删除按钮来实现这个过程:

 Private Sub btnDel_Click(sender As Object, e As EventArgs) Handles btnDel.Click
        If DataGridView1.SelectedRows.Count > 0 Then
            If MessageBox.Show("确定要删除所选信息吗?", "提示", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                DelUser()
            End If
        Else
            MessageBox.Show("请选择要删除的用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Return
        End If

    End Sub

仅仅是个人的一点想法,希望和大家交流!

机房收费系统之DataGridView

时间: 2024-11-03 22:15:41

机房收费系统之DataGridView的相关文章

VB.NET版机房收费系统—DataGridView应用

事实上,先前刚刚開始敲机房的时候,刚用到DataGridView的时候,总显得力不从心,先要一下子就学会,看了非常多的资料,但是依照写的时候,自己有不知道从什么地方下手,于是,当自己用查询SQL语句,并用DataGridView显示出来,这个功能不能实现,但这里给大家写一下,假设有什么地方不好的会,请大家指出: 第一版: 窗口设计: 须要的控件: DateTimePicker.DataSet.DataGridView 把握的三步骤: 第一步:使用视图,创建出你要的产寻结果的视图(假设是一个表就能

vb.net版机房收费系统重构的成长历程(功能实现篇)

重构机房收费系统,功能是不变的,需求是不变的,系统背后的代码,架构发生了改变.做过vb6.0版的系统 后,利用VS的VB.NET平台, 通过调整程序架构,加入了设计模式,改善软件的质量.性能,提高软件的扩展性和维护性.相比旧版系统,新版系统主要亮点有: 亮点一:代码分层管理,清晰明了 亮点二:加入工厂和接口,代码复用较多,减少了重复或相似的代码. 亮点三:用到了存储过程.一方面减少了代码量,另一方面也相当于是一个事务的执行.比如注册或者结账需要同 时操作多张表,这几个表必须同时被操作成功后才可以

VB.NET版机房收费系统---组合查询

查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有如何的惊喜等着我? 啊哦,这个信息并非我想要的,于是我再搜,"丁国华 廊坊师范学院  csdn"搜索结果例如以下: 非常显然,这个还不是我想要的结果,我接着搜,"丁国华 廊坊师范学院 csdn 初雪之恋": 在我的理解中,组合查询就是通过条件层层限制,一步一步精确,得到我们想要的答案,在机房收费系统中,有好几处涉

与机房收费系统的再一次相处(.NET版):

机房收费系统个人重构的尾巴,也就是到了整体总结的时候了.师傅的每一次验收都会有太多的收获,自己暴漏的漏洞也越多. 首先,说说时间.有史以来,觉得最高效利用时间的一次,这和师傅的指导和督促是拖不了关系的.正直专业期末考试的那个月,时间抓起来就稍微有点费劲,但是,做好规划,还是觉得没有那么忙.因为在开始之前,师傅就给规定了时间,说什么内容多长时间内完成.每天都有自己的计划,要完成几个窗体或者是画多少图,早就找米老师谈过时间管理的问题,只有这时才深有体会.有这样的好师傅管着就好好学习,如果师傅不管了那

VB.NET版机房收费系统---导出Excel表格

datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,可以显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件非常简单和直观,大多数情况下,只需要设置DataSource属性即可,在绑定到包含多个列表或表的数据库源时,只需将DataMember属性设置为绑定的列表或表的字符串即可.机房收费系统多次用到数据表格的显示,并且导出为Excel表格,第一次机房收费系统是用VB版本的,她导出Excel的方法如下: 打开VB-工程-应用-勾选M

【VB.NET 机房收费系统】——对SqlHelper别说“不”

 简介 SqlHelper是一个基于·NETFramework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化你重复 的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等.SqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便. ----官方正解 一长串的文字,我注意到的是"很方便"这三个字,那是有多方便呢???还不会用呢,也没发现又方便呀,单单就看S

VB.NET版机房收费系统---报表

报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据. 比如:民间常常说的豆腐帐,就是卖豆腐的每天将自己的卖出的豆腐记在一个本子上,然后每月都要汇总算算,这种情况下,报表数据和报表格式是紧密结合在一起的,都在同一个本子上.数据也只能有一种几乎只有记帐的人才能理解的表现形式,且这种形式难于修改. VB版机房收费系统的报表采用的是第三方的Grid++Report,

【机房收费系统】多么痛的领悟

这次机房收费系统,是所有的项目中,自己完成的最不满意的了. 时间之长,效率之慢.一开始,就感觉无从下手,但总会相信自己能慢慢的进入状态.终于有机会自己练练手了,也自认为之前自己设计模式学的还不错,也终于有机会能自己想想设计模式了.该是一件多么帅的事.拖了这么久,到现在只用上了外观 抽象工厂 模板 个人版就这么结束了.真心不想再拖一天了. 话说,并不觉得自己敲代码会比别人差多少.一开始敲完三层,又开始画图.还是一头的雾水.设计数据库,终于有了一点自己的想法也重温了之前学习的数据库原理,还是比较欣慰

机房收费系统个人重构版:软工文档中那些图

[前言]    图.提到这个字的时候脑海中就会出现许很多多的图像,它的重要性相信大家都明确.相比于文字来说它更生动形象正好符合人类大脑的记忆规律.非常多人也知道动画片制作原理也是用一张张图片仅仅只是转换的速度足够快而已,另外大家所熟知的思维导图等等.下面咱们这里介绍的是软件project中涉及的图! [图] 在上一篇博文<机房收费系统个人重构版:透过文档谈文档驱动开发>介绍了软工各个阶段的文档中都该有什么图.可是没有具体具体介绍各种图,在结束整个机房重构后,深感文档是整个开发的精髓.而图又是文