前两篇文章介绍了一下DataGridView控件绑定数据的使用,从中我们可以体会到Datagridview控件的强大。这篇文章呢,我们说一下如何删除DataGridView选中行并更新数据库。
一、实际操作
在“添加删除用户”的窗体中,我们会用到删除DataGridView控件中的数据这项功能。在界面上删除记录的同时,也要在数据库中把相应的数据进行删除。在这里就是根据“用户名”这个主键,把它传到实体中,然后在D层中进行数据库的删除操作。
首先,对插入的DataGridView控件进行相应的设置,列、列名(设置详情请看上一篇博客);
然后,开始进行代码的编写:
U层
<span style="font-family:KaiTi_GB2312;font-size:18px;"> '自定义一个删除DataGridView记录的方法,Del
Public Sub Del()
Dim k As Integer = Me.DataGridView1.SelectedRows.Count
Dim EUser As New Entity.UserInfoEntity
Dim BUser As New BLL.AddRemoveUserBLL
'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("userID").Value.ToString()
'判断该行用户是否为当前登录用户
If frmLogin.txtUname.Text = usercode Then
MsgBox("当前用户不能被删除,请重新选择!", vbOKOnly + vbExclamation, "系统提示")
Exit Sub
Else
'将usercode传值给EUser实体的userName属性,即根据用户名进行删除
EUser.userName = usercode
End If
'从数据库执行删除的操作
If BUser.DelUser(EUser) Then
MsgBox("删除成功!", vbOKOnly + vbInformation, "系统提示")
Else
MessageBox.Show("删除失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.[Error])
Return
End If
Call showUser()
Next
Else
DataGridView1.Rows.Clear()
End If
End Sub
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
Del()
End If
Else
MessageBox.Show("请选择要删除的用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return
End If
End Sub
Private Sub cmbLevel_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbLevel.SelectedIndexChanged
Call showUser() '调用showUser方法,
End Sub
'在DataGridView中显示数据的方法
Public Sub showUser()
Dim BUser As New BLL.AddRemoveUserBLL '实例化B层的对象
Dim EUser As New Entity.UserInfoEntity '实例化实体层的对象
Dim List As New List(Of Entity.UserInfoEntity) '定义一个泛型集合
EUser.Level = cmbLevel.Text '将用户级别中的文本赋值给实体
List = BUser.Check(EUser)
'将泛型集合List中的数据,显示到DataFGridView控件上
DataGridView1.DataSource = List
End Sub</span>
B层
<span style="font-family:KaiTi_GB2312;font-size:18px;">Public Class AddRemoveUserBLL
Function DelUser(ByVal user As Entity.UserInfoEntity) As Boolean
Dim DUser As New DAL.AddRemoveUserDAL '实例化D层的DUser对象
Dim delResult As Boolean '定义一个布尔值
delResult = DUser.DelUser(user) '接收D层的返回值
Return delResult '返回到U层
End Function
Function Check(ByVal user As Entity.UserInfoEntity) As List(Of Entity.UserInfoEntity)
Dim DUser As New DAL.AddRemoveUserDAL
Dim List As New List(Of Entity.UserInfoEntity) '实例化一个新的泛型集合
List = DUser.Check(user) 'list调用D层的Check函数
Return List '返回泛型集合List
End Function
End Class</span>
D层
<span style="font-family:KaiTi_GB2312;font-size:18px;">Imports System.Data
Imports System.Data.SqlClient
Public Class AddRemoveUserDAL
'定义一个删除用户信息的函数,DelUser,返回值为布尔值
Function DelUser(ByVal user As Entity.UserInfoEntity) As Boolean
'定义一个操作数据库的助手类
Dim MySqlHelper As New SqlHelper
'定义一个对数据库的操作语句
Dim strSql As String
'定义SQL删除语句
strSql = "Delete from T_UserInfo where userName=@userName"
'加入参数
Dim paras As SqlParameter() = {New SqlParameter("@userName", user.userName)}
'执行查询,并返回查询结果
Return MySqlHelper.ExecAddDelUpdate(strSql, CommandType.Text, paras)
End Function
'定义一个在DataGridView中显示的函数,Check ,,,返回值为泛型集合
Function Check(ByVal user As Entity.UserInfoEntity) As List(Of Entity.UserInfoEntity)
'定义一个操作数据库的助手类
Dim MySqlHelper As New SqlHelper
'定义对数据库的操作语句
Dim strSql As String
strSql = "select * from T_UserInfo where level=@level"
'加入参数
Dim paras As SqlParameter() = {New SqlParameter("@level", user.Level)}
'执行查询,并将查询结果保存在Dt中
Dim dt As New DataTable
dt = MySqlHelper.ExecSelect(strSql, CommandType.Text, paras)
'将查询到的结果保存为泛型集合
Dim myList As New List(Of Entity.UserInfoEntity)
'进行判断,如果dt中有记录,则〉0
If dt.Rows.Count > 0 Then '有记录
'将dt转换成泛型集合
myList = ConvertHelper.convertToList(Of Entity.UserInfoEntity)(dt)
Return myList '返回泛型集合myList
Else
Return Nothing
End If
End Function
End Class</span>
实体层就略过了。
二、拓展
刚开始做的时候,在DataGridView中显示数据,老是把整张表都显示出来
下边这条语句可以去掉不想让它显示的列
<span style="font-family:KaiTi_GB2312;font-size:18px;">'将不需要的列去掉
'DataGridView1.Columns.Remove("Pwd")</span>
当然,也可以在窗体加载的时候,给combobox赋值后,加上下边这条语句,同样也可以实现同样的效果。
<span style="font-family:KaiTi_GB2312;font-size:18px;">DataGridView1.AutoGenerateColumns = False '加载时禁止自动加载数据</span>
在下一篇文章中,我将介绍如何“将DataGridView中的数据导出到Excel表中”,敬请关注。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/34764.html