機房重構---新增刪除使用者(刪除DataGridView選定行,更新資料庫)
阿新 • • 發佈:2019-01-25
前言:
我們在新增刪除使用者這個功能時,有一個選中行刪除,下面就讓我來告訴你們怎麼在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中的新增查詢裡面,那個查詢語句寫成刪除語句,也是可以執行的。很多東西需要我們去探索。