DataGridView数据绑定到支持更改通知并允许删除的IBindinglist,

在实现删除用户操作功能时遇到一个小问题,在移除DataGridView中的数据时,提示“DataGridView数据绑定到支持更改通知并允许删除的IBindinglist,否则不能以编程的方式移除”。

这是怎么回事呢?原来自己将DataGriview的数据源绑定为list集合,不是DataGridView指定的数据源,所以会出现这个错误。

既然有错误产生,那要怎么解决呢!解决办法有两种,第一种是在网上查到的,将指定数据源转换成List集合就可以。然后在进行RemoveAt移除。

转换代码如下:

IList list = (IList)datagridview1.DataSource;'转换数据源list.RemoveAt(datagridview1.CurrentRow.Index);’移除datagridview1.DataSource = null;'为空datagridview1.DataSource = list;’显示数据第二种方法,,是自己想出一种解决的方式。就是将通过sql语句将数据库中数据删除之后,调用查找数据的方法,实现更新DataGriview中的数据。

具体实现方式:

Public Sub deleteUser()Dim listuser As IList = dataUser.DataSourceDim intcount As Integer = Me.dataUser.SelectedRows.Count '选定行数Dim userinfo As New usreEntity() '定义实体变量Dim buserinfo As New AddDelBLL() '调用D层If Me.dataUser.Rows.Count > 0 Then '显示的行数'从下往上删除If intcount > 0 ThenFor intsum As Integer = intcount To 1 Step -1'获取第一行第一列的数据Dim usercode As String = dataUser.SelectedRows(intsum – 1).Cells("userID").Value.ToString()'判断该用户是否在线If usercode = UserName ThenMsgBox("当前用户在线,不能删除!", vbOKOnly + vbExclamation, "提示")Exit SubElse'如果不在线就将用户Usercode赋给userinfo实体userinfo.userID = usercodeEnd IfDim intnumber As Integer '定义一个整形变量intnumber = buserinfo.deluserinfo(userinfo) '将参数传入B层,接收返回受影响的行数If intnumber = 0 Then '如果受影响为O行MessageBox.Show("删除失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.[Error])Exit SubEnd IfNextMsgBox("删除成功!", vbOKOnly + vbExclamation, "提示")<span style="color:#ff0000;">Call selectuserinfo() '更新</span>ElsedataUser.Rows.Clear() '清空End IfElseMessageBox.Show("请选择要删除的用户!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning)End IfEnd SubPrivate Sub selectuserinfo()Dim userinfo As New List(Of usreEntity) '定义集合变量Dim userinfo1 As New usreEntity() '实例化D层Dim selectUser As New AddDelBLL() '调用B层If cmbUser.Text = "" ThenMsgBox("用户级别不能为空!")Exit SubEnd IfTryuserinfo1.userLevel = cmbUser.Textuserinfo = selectUser.selectUserInfo(userinfo1)dataUser.AutoGenerateColumns = TruedataUser.DataSource = userinfo '将查找的数据更新到dataGridview中'修改列头dataUser.Columns(0).HeaderCell.Value = "用户ID"dataUser.Columns(1).HeaderCell.Value = "用户密码"dataUser.Columns(2).HeaderCell.Value = "用户姓名"dataUser.Columns(3).HeaderCell.Value = "用户级别"dataUser.Columns(4).HeaderCell.Value = "开户日期"dataUser.Columns(5).HeaderCell.Value = "开户ID"Catch ex As ExceptionMsgBox(ex.Message.ToString())End TryEnd Sub每当自己独立解决一个问题,心情感觉总是很爽的。嘿嘿。

生活比你想象的要容易得多,只要学会接受那些不可接受的,

DataGridView数据绑定到支持更改通知并允许删除的IBindinglist,

相关文章:

你感兴趣的文章:

标签云: