【个人机房重构】——DataGridView控件绑定数据 ㈡

雨点打透心脏的1/2处 2022-08-10 13:53 365阅读 0赞
  1. 在上一篇文章中,说了一下使用DataGridView控件直接绑定数据源的做法,那样做虽然方便,但是有缺陷([详情请看上一篇文章][Link 1])。现在,我将从使用实体类填充泛型集合,用泛型集合来传递数据的方法,来展示DataGridView如何显示数据的。

一、设置DataGridView控件

首先,插入DataGridView控件后,进行相应的设置:

SouthEast

注:设置时,4、5是特别需要注意的。数据DataPropertyName这里,必须要与实体的属性名相同。

设置成功:

SouthEast 1

二、编写代码

U层

  1. '**********************************************
  2. ' 名:frmCheckRecharge
  3. ' 命名空间:UI
  4. ' 容:
  5. ' 功 能:查询学生充值记录
  6. ' 文件关系:
  7. ' 作 者:杨晨光
  8. ' 组:
  9. ' 生成日期:2014/8/12 22:17:44
  10. ' 号:V1.0.0.0
  11. ' 修改日志:
  12. ' 版权说明:
  13. '**********************************************
  14. Public Class frmCheckRecharge
  15. Private Sub btnCheck_Click(sender As Object, e As EventArgs) Handles btnCheck.Click
  16. '卡号不为空的话,开始进行传值
  17. Dim EUser As New Entity.RechargeEntity '实例化新的RechargeEntity,用来传递B层的实体
  18. Dim BUser As New BLL.CheckRechargeBLL '实例化新的CheckRechargeBLL,传递参数
  19. Dim LUser As New List(Of Entity.RechargeEntity) '实例化新的List泛型集合
  20. EUser.cardNo = VarType(txtCID.Text.Trim) '将卡号赋值给实体层的EUser,VarType将字符串类型转换成integer类型
  21. LUser = BUser.Check(EUser) '调用B层的Check方法
  22. '判断返回的泛型集合是否为空
  23. '不为空
  24. If IsNothing(LUser) = False Then
  25. '将泛型集合中数据,显示在DataGridView控件上
  26. DataGridView1.DataSource = LUser
  27. Else
  28. txtCID.Text = "" '清空输入卡号文本框
  29. txtCID.Focus() '获得光标输入焦点
  30. End If
  31. End Sub
  32. '自动显示行号
  33. Private Sub DataGridView1_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs)
  34. Try
  35. e.Graphics.DrawString((e.RowIndex + 1).ToString(),
  36. e.InheritedRowStyle.Font, New SolidBrush(Color.CadetBlue),
  37. e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 5)
  38. Catch
  39. MsgBox("操作失败")
  40. End Try
  41. End Sub
  42. End Class

B层

  1. Public Class CheckRechargeBLL
  2. Function Check(ByVal user As Entity.RechargeEntity) As List(Of Entity.RechargeEntity) '返回值为泛型集合
  3. '先判断卡号是否为空,为空的话
  4. If user.cardNo.ToString.Trim = "" Then
  5. MsgBox("卡号不能为空,请输入卡号!", MsgBoxStyle.Exclamation, "警告")
  6. Return Nothing
  7. End If
  8. '卡号不为空,则进行赋值判断
  9. Dim LUser As List(Of Entity.RechargeEntity)
  10. Dim DUser As New DAL.CheckRechargeDAL
  11. LUser = DUser.Query(user) 'user值通过D层的Query方法,传到泛型集合LUser
  12. '判断返回的泛型集合是否为空
  13. If IsNothing(LUser) = False Then '不为空
  14. Return LUser
  15. Else
  16. MsgBox("没有此卡号的记录,请重新输入卡号", MsgBoxStyle.Exclamation, "警告")
  17. Return Nothing
  18. End If
  19. End Function
  20. End Class

D层

  1. Imports System.Data
  2. Imports System.Data.SqlClient
  3. Public Class CheckRechargeDAL
  4. Function Query(ByVal user As Entity.RechargeEntity) As List(Of Entity.RechargeEntity)
  5. '定义一个操作数据库的助手类
  6. Dim MySqlHelper As New SqlHelper
  7. '定义对数据库的操作语句
  8. Dim strSql As String
  9. strSql = "select * from T_Recharge where cardNo=@cardNo"
  10. '加入参数
  11. Dim paras As SqlParameter()
  12. paras = {New SqlParameter("@cardNo", user.cardNo)}
  13. '执行查询,并将查询的结果保存到dt里边
  14. Dim dt As DataTable
  15. '保存转换后的泛型集合
  16. Dim myList As List(Of Entity.RechargeEntity)
  17. '执行查询
  18. dt = MySqlHelper.ExecSelect(strSql, CommandType.Text, paras)
  19. '进行判断,dt中是否有记录
  20. If dt.Rows.Count > 0 Then 'dt中有记录
  21. '将dt转换为泛型集合
  22. myList = ConvertHelper.convertToList(Of Entity.RechargeEntity)(dt)
  23. Return myList '返回myList
  24. Else
  25. Return Nothing
  26. End If
  27. End Function
  28. End Class

三、结果

SouthEast 2

发表评论

表情:
评论列表 (有 0 条评论,365人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c#重构DataGridView

    前言   在重构进行查询的过程中,我们会接触一个控件:DataGridView,对于这个控件,在不同的场合会有不同的属性设置,现在我们就一起来看一下这个控件的属性设置。