VB.NET中DataGridView删除指定数据行,并更新数据库

前端之家收集整理的这篇文章主要介绍了VB.NET中DataGridView删除指定数据行,并更新数据库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

收费系统需要这样一个功能:首先用DataGridView浏览所有用户信息,然后可以删除指定行的用户信息,最后更新这一变化。界面如图:

1、首先检测要删除用户是否是当前正在使用的用户

  1. <SPANstyle="FONT-FAMILY:KaiTi_GB2312;FONT-SIZE:18px">'查看改用户是否正在被使用,若正在使用则不能删除
  2. @H_403_31@IfTrim(DGVuser.CurrentRow.Cells(0).Value)=frmLogin.txtUID.Text@H_403_31@Then
  3. MsgBox("该用户正在使用,不能删除!",MsgBoxStyle.OkOnly,"正在使用")
  4. @H_403_31@Exit@H_403_31@Sub
  5. @H_403_31@End@H_403_31@If</SPAN>

2、然后在删除指定数据行:

  1. <SPANstyle="FONT-FAMILY:KaiTi_GB2312;FONT-SIZE:18px">'删除datagridview中的数据行
  2. 'DGVuser.Rows.Remove(DGVuser.CurrentRow)也可
  3. DGVuser.Rows.RemoveAt(DGVuser.CurrentRow.Index)</SPAN>

3、建立一个模板类,用于传递数据:
  1. <SPANstyle="FONT-FAMILY:KaiTi_GB2312;FONT-SIZE:18px">@H_403_31@Public@H_403_31@Classdm_datatable
  2. @H_403_31@Private_dt@H_403_31@AsDataTable
  3. @H_403_31@Public@H_403_31@PropertyDT@H_403_31@AsDataTable
  4. @H_403_31@Get
  5. @H_403_31@Return_dt
  6. @H_403_31@End@H_403_31@Get
  7. @H_403_31@Set(@H_403_31@ByValvalue@H_403_31@AsDataTable)
  8. _dt=value
  9. @H_403_31@End@H_403_31@Set
  10. @H_403_31@End@H_403_31@Property
  11. @H_403_31@End@H_403_31@Class</SPAN>
  1. <SPANstyle="WHITE-SPACE:normal"><SPANstyle="FONT-FAMILY:KaiTi_GB2312;FONT-SIZE:18px"></SPAN></SPAN>
4、用表示层,用模板类传递数据:
  1. <SPANstyle="FONT-FAMILY:KaiTi_GB2312;FONT-SIZE:18px">@H_403_31@Dimdt@H_403_31@As@H_403_31@NewDataModel.dm_datatable
  2. dt.DT=DGVuser.DataSource</SPAN>
  1. <SPANstyle="WHITE-SPACE:normal"><SPANstyle="FONT-FAMILY:KaiTi_GB2312;FONT-SIZE:18px"></SPAN></SPAN>
5、在数据访问层,编写修改数据库函数
  1. <SPANstyle="FONT-FAMILY:KaiTi_GB2312;FONT-SIZE:18px">'删除指定用户
  2. @H_403_31@Public@H_403_31@FunctiondeleteUser(@H_403_31@ByValdm_dt@H_403_31@AsDataModel.dm_datatable)@H_403_31@As@H_403_31@Boolean
  3. @H_403_31@DimconnString@H_403_31@As@H_403_31@String=_
  4. "PersistSecurityInfo=true;DataSource=192.168.24.158;InitialCatalog=CR_Charge_SYS;UserID=sa;PWD=123456"
  5. @H_403_31@Dimsqlconn@H_403_31@As@H_403_31@NewsqlConnection(connString)
  6. @H_403_31@Dimsqltxt@H_403_31@As@H_403_31@String="select*fromUser_info"
  7. @H_403_31@Dimsqlcmd@H_403_31@As@H_403_31@NewsqlCommand(sqltxt,sqlconn)
  8. @H_403_31@Dimda@H_403_31@As@H_403_31@NewsqlDataAdapter(sqlcmd)
  9. @H_403_31@Dimds@H_403_31@As@H_403_31@NewDataSet
  10. @H_403_31@Dimdt@H_403_31@As@H_403_31@NewDataTable
  11. da.UpdateCommand=sqlcmd
  12. @H_403_31@Dimmybuilder@H_403_31@As@H_403_31@NewsqlCommandBuilder(da)
  13. @H_403_31@Try
  14. dt=dm_dt.DT.Copy
  15. ds.Tables.Add(dt)
  16. sqlconn.Open()
  17. da.Update(ds,"User_info")
  18. @H_403_31@Return@H_403_31@True
  19. @H_403_31@Catchex@H_403_31@AsException
  20. MsgBox(ex.Message)
  21. @H_403_31@Return@H_403_31@False
  22. @H_403_31@Finally
  23. sqlconn.Close()
  24. sqlcmd=@H_403_31@Nothing
  25. @H_403_31@End@H_403_31@Try
  26. @H_403_31@Return@H_403_31@Nothing
  27. @H_403_31@End@H_403_31@Function</SPAN>
6、在业务逻辑层,编写传递数据访问层的函数
  1. <SPANstyle="FONT-FAMILY:KaiTi_GB2312;FONT-SIZE:18px">'删除指定用户
  2. @H_403_31@Public@H_403_31@FunctiondeleteUser(@H_403_31@ByValdt@H_403_31@AsDataModel.dm_datatable)@H_403_31@As@H_403_31@Boolean
  3. @H_403_31@DimsqlUserInfo@H_403_31@As@H_403_31@NewChargeSystemDAL.dal_User_info
  4. @H_403_31@ReturnsqlUserInfo.deleteUser(dt)
  5. @H_403_31@End@H_403_31@Function</SPAN>
7、最后,在表示层,调用业务逻辑层的函数
  1. <SPANstyle="FONT-FAMILY:KaiTi_GB2312;FONT-SIZE:18px">@H_403_31@Dimdt@H_403_31@As@H_403_31@NewDataModel.dm_datatable
  2. '数据更改更新到数据库
  3. @H_403_31@IfbllUserinfo.deleteUser(dt)=@H_403_31@True@H_403_31@Then
  4. MsgBox("成功删除用户!","成功")
  5. @H_403_31@Exit@H_403_31@Sub
  6. @H_403_31@Else
  7. MsgBox("未能成功删除用户,详情请咨询管理员!","失败")
  8. @H_403_31@Exit@H_403_31@Sub
  9. @H_403_31@End@H_403_31@If</SPAN>
在5中,如果直接这样调用:ds.Tables.Add(dm_dt.DT),则会产生错误:DT已存在DataSet。所以dm_dt.DT复制后才能为ds所使用。

猜你在找的VB相关文章