机房收费系统之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 UserID=@UserID"
        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

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

时间: 2024-05-08 23:35:02

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

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

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

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

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

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

       查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我?                            啊哦,这个信息并不是我想要的,于是我再搜,"丁国华 廊坊师范学院  csdn"搜索结果如下:                     很显然,这个还不是我想要的结果,我接着搜,"丁国华 廊坊师范学院 csdn 初雪之恋":  

机房收费系统:(三)SQLSever中自增长ID问题

       在本次机房收费系统中,数据库的用户增加过程中需要将每个增加的用户给一个自增长的序列号,这就考虑到数据库和VB的交互过程,甚至我们会遇到在写数据库程序的时候,经常会需要获取某个表中的最大序号数,查询资料找了几个方法,解决问题. 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. (1) getGeneratedKeys()方法:      程序片断:         Connection conn=...;

机房收费系统注册之实时错误

         机房收费系统,按着既定的脚步一步一步的往前走,窗体布局,实现代码,调代码,一不小心,写错一个单词,或者定义出了问题,都会导致程序无法正常运行下去,导致错误的原因有很多,但是导致同一个错误的原因却又不尽相同,无论怎样,自己还是在一个有一个的bug中找到闪光点,一点一点的向前进......,下面的这些错误时在注册的时候遇到的,做一个简单的总结.          实时错误'-2147217873(80040e2f)'                  NULL,本意是空的,元素只有

机房收费系统的实现:VB中如何将MSHFlexGrid控件中的数据导出到Excel

机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系统,不过并没有涉及到这个功能,因此记录于此,于己,回顾反思,于大家,分享学习. 方法一:在根目录中事先建立空的Excel表格 1.在与VB工程同一根目录中建立将要导入数据的Excel表格: 2.在VB事件中写代码: Private Sub cmdExport_Click() Dim i As Int

机房收费系统之初体验

    继学生信息管理系统之后,另一个更加庞大的系统又向我们走来了.看了好久的数据库视频,都看烦了,想想不如看看新鲜的东西.机房收费系统,瞧瞧去.     一解压文件,看到里面的那些东西,傻眼了,这和学生信息管理系统也相差太远了.简简单单的,只有可怜的这么几个东西.       这也没办法,大家都一样.我们都需要成长,就像小鸟一样,刚出生可以依偎在妈妈身边,可总有那么一天,它需要自己学会飞翔.我们做系统也一样,不能总是依靠完完整整的源代码,我们自己也需要飞翔起来,去寻找更广阔的那一片天地.  

机房收费系统之技术总结

机房收费系统,从最初的迷茫到现在的明朗,这一路,总算是到站了. 看到完工后的系统,自己都惊呆了.总共有27个窗体,一个模块,代码的多少可想而知,那么多那么多,都是自己敲上去的,和学生信息管理系统相比,真的算得上是一次飞跃了吧.前前后后,历时二十多天,不管是技术上还是思想上,自己的收获很大. 从头到尾,自己都是尽心尽力,从新建数据库到新建各个表,从各个窗体设计到各个窗体代码,一个也不容小觑. 先从自己的数据库说起:一共九张表,这个过程很漫长,不是一开始就照着原来的模板建,而是在敲代码的过程中,用到

机房收费系统(VB.NET)个人版总结

    重构版个人机房收费系统大概从暑假开学开始进行,花了不到一个半月的时间才完成,下面对我在重构过程中的一写理解.          1.系统设计一个很重要的目的就是重用,而要做到重用,低耦合是最有效的手段回顾一下我们C/S的整个学习过程,我们可以发现,从开始的VB版的机房收费系统,然后到现在VB.NET版,加设计模式.对系统进行分层,这个过程就是在对系统进行解耦.要解耦,首先就要进行抽象.把多次.重复用到的代码进行封装,其余的部分运用继承或者多态的思想,来进行使用.    在机房收费系统中我