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

    在上一篇文章中,说了一下使用DataGridView控件直接绑定数据源的做法,那样做虽然方便,但是有缺陷(详情请看上一篇文章)。现在,我将从使用实体类填充泛型集合,用泛型集合来传递数据的方法,来展示DataGridView如何显示数据的。


一、设置DataGridView控件


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




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


设置成功:





二、编写代码


U层


'********************************************** 
' 文 件 名:frmCheckRecharge
' 命名空间:UI
' 内    容:
' 功    能:查询学生充值记录
' 文件关系:
' 作    者:杨晨光
' 小    组:
' 生成日期:2014/8/12 22:17:44
' 版 本 号:V1.0.0.0
' 修改日志:
' 版权说明:
'**********************************************

Public Class frmCheckRecharge
    Private Sub btnCheck_Click(sender As Object, e As EventArgs) Handles btnCheck.Click
        '卡号不为空的话,开始进行传值
        Dim EUser As New Entity.RechargeEntity    '实例化新的RechargeEntity,用来传递B层的实体
        Dim BUser As New BLL.CheckRechargeBLL     '实例化新的CheckRechargeBLL,传递参数
        Dim LUser As New List(Of Entity.RechargeEntity)   '实例化新的List泛型集合

        EUser.cardNo = VarType(txtCID.Text.Trim)    '将卡号赋值给实体层的EUser,VarType将字符串类型转换成integer类型

        LUser = BUser.Check(EUser)     '调用B层的Check方法

        '判断返回的泛型集合是否为空
        '不为空
        If IsNothing(LUser) = False Then
            '将泛型集合中数据,显示在DataGridView控件上
            DataGridView1.DataSource = LUser
        Else
            txtCID.Text = ""     '清空输入卡号文本框
            txtCID.Focus()      '获得光标输入焦点
        End If
    End Sub

    '自动显示行号
    Private Sub DataGridView1_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs)
        Try
            e.Graphics.DrawString((e.RowIndex + 1).ToString(),
                                  e.InheritedRowStyle.Font, New SolidBrush(Color.CadetBlue),
                                  e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 5)
        Catch
            MsgBox("操作失败")
        End Try
    End Sub
End Class


B层


Public Class CheckRechargeBLL
    Function Check(ByVal user As Entity.RechargeEntity) As List(Of Entity.RechargeEntity)  '返回值为泛型集合
        '先判断卡号是否为空,为空的话
        If user.cardNo.ToString.Trim = "" Then
            MsgBox("卡号不能为空,请输入卡号!", MsgBoxStyle.Exclamation, "警告")
            Return Nothing
        End If

        '卡号不为空,则进行赋值判断
        Dim LUser As List(Of Entity.RechargeEntity)
        Dim DUser As New DAL.CheckRechargeDAL

        LUser = DUser.Query(user)    '将user值通过D层的Query方法,传到泛型集合LUser中

        '判断返回的泛型集合是否为空
        If IsNothing(LUser) = False Then     '不为空
            Return LUser
        Else
            MsgBox("没有此卡号的记录,请重新输入卡号", MsgBoxStyle.Exclamation, "警告")
            Return Nothing
        End If
    End Function
End Class


D层


Imports System.Data
Imports System.Data.SqlClient
Public Class CheckRechargeDAL
    Function Query(ByVal user As Entity.RechargeEntity) As List(Of Entity.RechargeEntity)
        '定义一个操作数据库的助手类
        Dim MySqlHelper As New SqlHelper
        '定义对数据库的操作语句
        Dim strSql As String
        strSql = "select * from T_Recharge where cardNo=@cardNo"
        '加入参数
        Dim paras As SqlParameter()
        paras = {New SqlParameter("@cardNo", user.cardNo)}
        '执行查询,并将查询的结果保存到dt里边
        Dim dt As DataTable


        '保存转换后的泛型集合
        Dim myList As List(Of Entity.RechargeEntity)
        '执行查询
        dt = MySqlHelper.ExecSelect(strSql, CommandType.Text, paras)


        '进行判断,dt中是否有记录
        If dt.Rows.Count > 0 Then    'dt中有记录
            '将dt转换为泛型集合
            myList = ConvertHelper.convertToList(Of Entity.RechargeEntity)(dt)
            Return myList      '返回myList
        Else
            Return Nothing
        End If
    End Function
End Class

三、结果











评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值