1. 程式人生 > >機房重構---新增刪除使用者(刪除DataGridView選定行,更新資料庫)

機房重構---新增刪除使用者(刪除DataGridView選定行,更新資料庫)

前言:

我們在新增刪除使用者這個功能時,有一個選中行刪除,下面就讓我來告訴你們怎麼在DataGridView來實現這個功能吧

內容:

1、繫結資料來源

2、程式碼的展示

(1)窗體載入中新增可選擇使用者級別

    Private Sub frmAdDeleteAddUser_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO: 這行程式碼將資料載入到表“LoginDataSet4.Y_User_Info”中。您可以根據需要移動或刪除它。
        Me.Y_User_InfoTableAdapter.Fill(Me.LoginDataSet4.Y_User_Info)


        With cmbSelect
            .Items.Add("管理員")
            .Items.Add("操作員")
            .Items.Add("一般使用者")
        End With


        '隱藏工具欄
        FillByToolStrip.Hide()
        '清空DataGridView表中資料  
        While (DataGridView1.RowCount > 0)
            DataGridView1.Rows.Remove(DataGridView1.Rows(0))

        End While

    End Sub

(2)使用者級別的選擇-控制元件改變事件,同時根據選擇顯示相應的資訊

 Private Sub cmbSelect_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbSelect.SelectedIndexChanged
        LevelToolStripTextBox.Text = cmbSelect.SelectedItem.ToString() '將自己新增的Combo中的內容賦給ToolStripTextBox控制元件

        Try
            Me.Y_User_InfoTableAdapter.FillBy(Me.LoginDataSet4.Y_User_Info, LevelToolStripTextBox.Text)
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        End Try

    End Sub

(3)刪除選中行

  Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
        '判斷是否選中
        If Me.DataGridView1.SelectedRows.Count > 0 Then
            If MessageBox.Show("刪除後不可恢復,確定要刪除選中的使用者嗎?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                Delete()
            End If
        Else
            MessageBox.Show("請選擇要刪除的使用者!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return
        End If

    End Sub
    Public Sub Delete()
        Dim k As Integer = Me.DataGridView1.SelectedRows.Count
        Dim user As New Entity.Entity
        Dim deleteUser As New Facade.DeleteUserFacade ‘外觀層

        If DataGridView1.Rows.Count > 0 Then

            '從下往上刪,避免沙漏效應
            For i As Integer = k To 1 Step -1
                '獲取選中行的列名,並將使用者名稱UserID賦值給userDele
                Dim userDele As String = DataGridView1.SelectedRows(i - 1).Cells("UserID").Value.ToString
                '如果選中行使用者為正在登入的使用者,則不能刪除
                If Form1.txtUserID.Text =userDele  Then
                    MsgBox("當前使用者不能被刪除,請重新選擇!", vbOKOnly + vbExclamation, "系統提示")
                    Exit Sub
                Else
                    user.userID = userDele
                End If

                If deleteUser.deleuserFacade(user) 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

(4)獲取選中行的使用者名稱



 '獲取選中行的列名,並將使用者名稱UserID賦值給userDele
   Dim userDele As String = DataGridView1.SelectedRows(i - 1).Cells("UserID").Value.ToString

(5)外觀層程式碼 ,後面幾層自己寫就好

Imports BLL
Imports Entity
Public Class DeleteUserFacade
    Public Function deleuserFacade(user As Entity.Entity)
        Dim deleuserBll As New BLL.DeleteUserBLL
        Dim dt As Integer

        dt = deleuserBll.deleteUser(user)
        Return dt
    End Function
End Class

(6)D層程式碼--資料庫刪除選中行資料

Imports System.Data.SqlClient
Imports System.Data
Imports Entity
Imports IDAL
Imports SQLHelper
Public Class DeleteUserDAL : Implements IDAL.IDeleteAddUser
    Public Function Ideleteadduser(ByVal user As Entity.Entity) Implements IDAL.IDeleteAddUser.Ideleteadduser
        Dim sqlhelper As New SQLHelper.sqlhelper
        Dim Dt As Integer
        Dim sqlDelete As String


        Dim paras As SqlParameter() = {New SqlParameter("@UserID", user.userID)}

        sqlDelete = "delete from Y_User_Info where UserID = @UserID "
        Dt = sqlhelper.ExecAddDelUpdate(sqlDelete, CommandType.Text, paras)


        Return Dt

    End Function



End Class

3、總結:

 這次顯示查詢到的資料是直接用的DataGridView連線資料來源查詢的,只有刪除選中行是走的七層,感覺挺方便的,沒有費多少事。在DataGridView中的新增查詢裡面,那個查詢語句寫成刪除語句,也是可以執行的。很多東西需要我們去探索。