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

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

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

    效果如下:

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

    删除Datagridview选中行并更新数据库_第1张图片

   

    2、选择“是”

    删除Datagridview选中行并更新数据库_第2张图片

    3、数据库变化

    删除Datagridview选中行并更新数据库_第3张图片

    删除Datagridview选中行并更新数据库_第4张图片

   

    实现代码如下:

    D层:负责更新数据库

    ''' <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 UserID=@ID"                               '删除用户sql语句
        param = New SqlParameter() {New SqlParameter("@ID", enUserInfo.UserID)}      '给参数ID传值
        bln = DBHelper.ExecuteUID(strSql, CommandType.Text, param)                   '调用SqlHelper,执行sql语句
        Return bln

    End Function

 

    B层:

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

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

    End Function

   

     U层:给实体层传值,执行B层方法

 ''' <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

   

    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



 

你可能感兴趣的:(删除Datagridview选中行并更新数据库)