删除Datagridview选中行并更新数据库

页面导航:首页 > 软件编程 > vb.net > 删除Datagridview选中行并更新数据库

删除Datagridview选中行并更新数据库

来源: 作者: 时间:2016-01-18 16:54 【

我们通常会遇到删除dataGridview中选中的一和或都多行数据,在网上查了好多方法,有些只能删除dataGridview中的数据,而不能删除数据库中的源数据,或者有些只能删除选中的一行,而不

     我们通常会遇到删除dataGridview中选中的一和或都多行数据,在网上查了好多方法,有些只能删除dataGridview中的数据,而不能删除中的源数据,或者有些只能删除选中的一行,而不能同时删除多行,经过一番尝试,终于解决了这个问题:

    实现的功能:可以删除一行或者多行数据,并在删除前提醒是否确定进行删除!

    效果如下:

    1、选中两行,点击删除按钮

   \

   

    2、选择“是”

   \

    3、数据库变化

   

   \

    \

   

    实现代码如下:

    D层:负责更新数据库
[vb] 
''' <summary>  
''' 删除用户信息  
''' </summary>  
''' <param name="enUserInfo">用户信息实体</param>  
''' <returns>布尔值类型</returns>  
''' <remarks></remarks>  
Public Function DelUser(ByVal enUserInfo As Entity.UserInfoEntity) As Boolean 
 
    Dim strSql As String 
    Dim DBHelper As New SqlHelper 
    Dim param As SqlParameter() 
    Dim bln As Boolean 
 
    strSql = "Delete From T_User Where [email protected]"                               '删除用户sql语句  
    param = New SqlParameter() {New SqlParameter("@ID", enUserInfo.UserID)}      '给参数ID传值  
    bln = DBHelper.ExecuteUID(strSql, CommandType.Text, param)                   '调用SqlHelper,执行sql语句  
    Return bln 
 
End Function 

    ''' <summary>
    ''' 删除用户信息
    ''' </summary>
    ''' <param name="enUserInfo">用户信息实体</param>
    ''' <returns>布尔值类型</returns>
    ''' <remarks></remarks>
    Public Function DelUser(ByVal enUserInfo As Entity.UserInfoEntity) As Boolean

        Dim strSql As String
        Dim DBHelper As New SqlHelper
        Dim param As SqlParameter()
        Dim bln As Boolean

        strSql = "Delete From T_User Where [email protected]"                               '删除用户sql语句
        param = New SqlParameter() {New SqlParameter("@ID", enUserInfo.UserID)}      '给参数ID传值
        bln = DBHelper.ExecuteUID(strSql, CommandType.Text, param)                   '调用SqlHelper,执行sql语句
        Return bln

    End Function

    B层:
[vb] 
Public Function DelUserManager(ByVal enUserInfo As Entity.UserInfoEntity) As Boolean 
 
    Dim DelUser As New DAL.UserDataDAL 
    Return DelUser.DelUser(enUserInfo) 
 
End Function 

    Public Function DelUserManager(ByVal enUserInfo As Entity.UserInfoEntity) As Boolean

        Dim DelUser As New DAL.UserDataDAL
        Return DelUser.DelUser(enUserInfo)

    End Function  

     U层:给实体层传值,执行B层方法
[vb] 
''' <summary>  
   ''' 自定义的删除Datagridview记录的方法  
   ''' </summary>  
   ''' <remarks></remarks>  
   Public Sub Del() 
 
       Dim k As Integer = Me.DataGridView1.SelectedRows.Count 
       Dim enUserInfo As New Entity.UserInfoEntity 
       Dim DelUserUI As New BLL.AddDelUserBLL 
 
       'Datagridview中是否存在数据  
       If DataGridView1.Rows.Count > 0 Then 
 
           '从下往上删,避免沙漏效应  
           For i As Integer = k To 1 Step -1 
 
               '获取第N行的第一列的数据  
               Dim usercode As String = DataGridView1.SelectedRows(i - 1).Cells("用户名").Value.ToString() 
 
               '判断是否该行用户是否为当前登录用户  
               If frmLogin.txtUserID.Text = usercode Then 
                   MsgBox("当前用户不能被删除,请重新选择!", vbOKOnly + vbExclamation, "提示") 
                   Exit Sub 
               Else 
                   '将usercode传值给enUserInfo实体的UserID属性(即根据用户名删除)  
                   enUserInfo.UserID = usercode 
               End If 
 
               '从数据库执行删除操作  
               If DelUserUI.DelUserManager(enUserInfo) Then 
                   MsgBox("删除成功!", vbOKOnly + vbInformation, "系统提示") 
               Else 
                   MessageBox.Show("删除失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.[Error]) 
                   Return 
               End If 
               '将从数据库中删除的信息从Datagridview1中删除  
               Me.DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(i - 1).Index) 
           Next 
       Else 
           DataGridView1.Rows.Clear() 
       End If 
 
   End Sub 

 ''' <summary>
    ''' 自定义的删除Datagridview记录的方法
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Del()

        Dim k As Integer = Me.DataGridView1.SelectedRows.Count
        Dim enUserInfo As New Entity.UserInfoEntity
        Dim DelUserUI As New BLL.AddDelUserBLL

        'Datagridview中是否存在数据
        If DataGridView1.Rows.Count > 0 Then

            '从下往上删,避免沙漏效应
            For i As Integer = k To 1 Step -1

                '获取第N行的第一列的数据
                Dim usercode As String = DataGridView1.SelectedRows(i - 1).Cells("用户名").Value.ToString()

                '判断是否该行用户是否为当前登录用户
                If frmLogin.txtUserID.Text = usercode Then
                    MsgBox("当前用户不能被删除,请重新选择!", vbOKOnly + vbExclamation, "系统提示")
                    Exit Sub
                Else
                    '将usercode传值给enUserInfo实体的UserID属性(即根据用户名删除)
                    enUserInfo.UserID = usercode
                End If

                '从数据库执行删除操作
                If DelUserUI.DelUserManager(enUserInfo) Then
                    MsgBox("删除成功!", vbOKOnly + vbInformation, "系统提示")
                Else
                    MessageBox.Show("删除失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.[Error])
                    Return
                End If
                '将从数据库中删除的信息从Datagridview1中删除
                Me.DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(i - 1).Index)
            Next
        Else
            DataGridView1.Rows.Clear()
        End If

    End Sub   

[vb] 
Private Sub btnDelUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelUser.Click 
 
    '选中记录则提示谨慎删除,没有选中数据则提示选择。  
    If Me.DataGridView1.SelectedRows.Count > 0 Then 
 
        If MessageBox.Show("确定要删除选中的用户吗?删除后将不可恢复!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then 
            Del() 
        End If 
    Else 
        MessageBox.Show("请选择要删除的用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
        Return 
    End If 
 
End Sub 

    Private Sub btnDelUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelUser.Click

        '选中记录则提示谨慎删除,没有选中数据则提示选择。
        If Me.DataGridView1.SelectedRows.Count > 0 Then

            If MessageBox.Show("确定要删除选中的用户吗?删除后将不可恢复!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
                Del()
            End If
        Else
            MessageBox.Show("请选择要删除的用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return
        End If

    End Sub


 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<