標籤:機房收費系統 datagridview vb.net
在我們平時的學習中不少見用到將資料庫與介面串連的一個控制項——DataGridView,在我們敲第一遍機房的時候我們用到的相似的控制項是——MSHFlexGrid,隨著學習的深入,發現我們用到的平台越來越人性化了,現在用的VS2013的控制項——DataGridView可以直接和資料庫相串連,今天重點說一下DataGridView刪除行並同時更新資料庫功能的實現:
這是刪除前的效果,我們要實現的是的效果,左圖為介面,右圖為資料庫中的資料,但是還需要考慮要刪除的使用者是否正在登入,如果正在登入,則不能刪除。
刪除後的效果:
實現這個功能主要是在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 [email protected]" 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.通過點擊刪除按鈕來實現這個過程:
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
僅僅是個人的一點想法,希望和大家交流!