我们通常看到很多的学习使用控制数据库和接口连接——DataGridView,在我们的房间,当我们敲开使用第一遍阶段似该控件——MSHFlexGrid,随着学习的深入,发现我们用到的平台越来越人性化了,如今用的VS2013的控件——DataGridView能够直接和数据库相连接,今天重点说一下DataGridView删除行并同一时候更新数据库功能的实现:

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

 

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ2RhbjE5OTExMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="300" height="170" alt="">

删除后的效果:

  

实现这个功能主要是在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.通过点击删除button来实现这个过程:

 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的更多相关文章

  1. 国内首款开源的互联网支付系统roncoo-pay

    roncoo-pay是国内首款开源的互联网支付系统,其核心目标是汇聚所有主流支付渠道,打造一款轻量.便捷.易用,且集支付.资金对账.资金清结算于一体的支付系统,满足互联网业务系统的收款和业务资金管理需 ...

  2. Java生鲜电商平台-商家支付系统与对账系统架构实战

    Java生鲜电商平台-商家支付系统与对账系统架构实战 说明:关于生鲜电商平台,支付系统是连接消费者.商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付 ...

  3. Dubbo入门到精通学习笔记(七):基于Dubbo的分布式系统架构介绍(以第三方支付系统架构为例)、消息中间件的作用介绍

    文章目录 架构简单介绍 消息中间件在分布式系统中的作用介绍 消息中间件的定义 消息中间件的作用 应用场景 JMS(Java Message Service) JMS消息模型 实现了JMS规范的消息中间 ...

  4. Atitit 在线支付系统功能设计原理与解决方案 与目录

    Atitit 在线支付系统功能设计原理与解决方案 与目录 1.1. 支付系统1 1.2. 独立的支付子体系..微服务架构..1 1.3. 参考书籍1 支付战争 [The PayPal Wars:Bat ...

  5. 基于支付系统真实场景的分布式事务解决方案效果演示: http://www.iqiyi.com/w_19rsveqlhh.html

    基于支付系统真实场景的分布式事务解决方案效果演示:http://www.iqiyi.com/w_19rsveqlhh.html

  6. XxPay支付系统-boot版本 使用

    https://segmentfault.com/a/1190000016987391?utm_source=tag-newest 有三个版本: spring boot 版本: spring clou ...

  7. XxPay支付系统-boot版本了解一下

    了解一下 之前看了龙果支付系统,也没看透,用公司框架改写,然后就改的比较乱

  8. Java电商支付系统实战(一)- 简介

    现如今,支付成为热点 对于电商业务,这都是不可或缺的 核心功能剖析 下单->支付 nginx 将用户请求反向代理到我们编写的电商系统 = 下单 之后,点击支付跳转到支付系统,最后对接 通过跳转将 ...

  9. SpringBoot2.1电商通用(微信+支付宝)支付系统实战

    『课程目录』: ├─第10章 全模块电商系统之商品模块 │      10-1_商品列表-上.mp4 │      10-2_商品列表-中.mp4 │      10-3_商品列表-下.mp4 │  ...

随机推荐

  1. Leetcode:maximum_depth_of_binary_tree题解

    一.     题目 给定一个二叉树,求它的最大深度.最大深度是沿从根节点,到叶节点最长的路径. 二.     分析 (做到这里发现接连几道题都是用递归,可能就是由于自己时挑的简单的做的吧.) 找出最深 ...

  2. 人迹罕至的android要完全退出程序的一种方法

    最近的一个项目,无意中发现了一个方法,使android要完全退出程序的一种方法,遥想当年,以便找到让的有效途径android遇险完全退出程序,我不由得有些感慨. 在这里,不敢独享.和大家分享一下,还启 ...

  3. iptables惹的祸

    我的工作环境总是一台Mac机+在Mac机上跑的虚拟机(Virtual Box) 有一个错误我总是在犯:宿主机总是无訪问到虚拟机里的web服务. 解决方法也非常easy:那就是关闭虚拟机上的防火墙!!! ...

  4. 百度官方wormHole后门检测记录(转)

    本次这个安卓后门真是哔了狗了,刚加入大安卓阵营就出了这个篓子,跟你root不root和什么安卓版本没有版毛钱关系,完全是百度SDK官方提供的后门,不是漏洞,人为的. 乌云地址:http://drops ...

  5. springmvc集成Ueditor插件实现图片上传2、

    一.下载Ueditor插件. 地址:http://ueditor.baidu.com/website/download.html 二.环境搭建. 具体可以参看http://fex.baidu.com/ ...

  6. typedef和define具体的具体差异

      1) #define这是一个预处理指令,简单的更换当预处理程序.不检查的正确性,仍不能正常关机进入的意思,那里只是已被展开时编译源代码会发现可能的错误和错误. 例如: #define PI 3.1 ...

  7. HTML文档中应用css样式的方法总结

    在HTML文档中应用css样式大致有三种方法:1.link标签链接外部样式表:2.使用style元素包含样式表:3.使用style属性,即内联样式 一.link标签链接外部样式表 先看一条较为标准的l ...

  8. Linux命令学习篇0——原产地

    昨天在用curl发送简单的HTTP请求做測试的时候发现自己每次使用的时候都是在网络上查看别人的演示样例才干想起来怎么用,这样效率太低了.尽管有网络依旧在,可是总感觉不是被自己掌握着,心里不踏实,回忆起 ...

  9. CSS定位:几种类型的position定位的元素

    当人们刚接触布局的时候都比较倾向于使用定位的方式.因为定位的概念看起来好像比较容易掌握.表面上你确切地指定了一个块元素所处的位置那么它就会坐落于那里.可是定位比你刚看到的时候要稍微复杂一点.对于定位来 ...

  10. C#-简单的定时器(C# ConsoleApp) ---ShinePans

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hpbmVwYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...