您的位置:首页 > 其它

机房收费系统集锦(二)--玩转DataGridView

2014-05-31 22:05 274 查看

做到现在了,敲代码的快感又如约而至了。不得不说,敲代码实在是一件富有激情的事儿。

好了,今天谈谈与数据显示有关的控件DataGridView吧。

其实在VB6中,大家对它已经有了一定的了解了,相信当时对于这个控件使用的纠结感觉已经不复存在了吧。在vb.net中,它的使用变得更加简单了。

下面以机房中的“查询充值记录”窗体为例,详细介绍一下gvw的“变形记”。

在Entity层中,只定义了CardNo这一个变量,就不在具体写出来了。

DLL层,处理数据,查询数据库里的充值信息

Public Function SelectChargeInfo(ByVal chargeInfo As Entity.frmChargeRecordEntity) As DataTable
        Dim connStr As String = "Server=Yang-PC;Database=ReCharge;User ID=sa;Password=123456"
        Dim conn As New SqlConnection(connStr)
        Dim cmd As New SqlCommand
        cmd.Connection = conn

        'T-SQL语句,选择需要显示的数据列
        cmd.CommandText = "Select T_ReCharge.cardNo,T_ReCharge.UserID,T_ReCharge.addMoney,T_ReCharge.Date,T_ReCharge.Time From T_ReCharge Where cardNo=@CardNo"
        cmd.Parameters.Add(New SqlParameter("@CardNo", chargeInfo.CardNo))  '给sql添加参数
        cmd.CommandType = CommandType.Text
        conn.Open()     '打开数据库

        Dim dataAdapter As New SqlDataAdapter  '实例化数据适配器SqlDataAdapter
        Dim dst As New DataSet                 '实例化数据集DataSet
        Dim dt As New DataTable                '实例化数据表DataTable

        dataAdapter.SelectCommand = cmd      '执行在数据源中选中的记录
        dataAdapter.Fill(dst, "chargeInfo")  '对数据集进行填充
        dt = dst.Tables("chargeInfo")        '形成临时数据表

        SqlHelper.sqlHelp.CloseDB()  '关闭数据库

        Return dt
    End Function



BLL层,简单调用D层函数

Public Function SelectCharge(ByVal ChargeInfo As Entity.frmChargeRecordEntity) As DataTable
        Dim ChargeInfoDal As New DAL.frmChargeRecordDal
        'Dim ChargeInfoEntity As New Entity.frmChargeRecordEntity
        Dim dt As New DataTable
        dt = ChargeInfoDal.SelectChargeInfo(ChargeInfo)  '执行D层的查询
        Return dt
End Function


UI层,对控件进行一些外观上的处理和加工



Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
        ChargeInfoEntity.CardNo = txtCardNo.Text.Trim

        ' 设置用户不能手动给 DataGridView 添加新行 
        gvwChargeRecord.AllowUserToAddRows = False
        Try
            If MSetText.TextSet(txtCardNo) = True Then   '此方法是设置文本框不为空等条件的自定义函数
                '执行BLL层下的查询充值记录
                gvwChargeRecord.DataSource = ChargeInfoBll.SelectCharge(ChargeInfoEntity)
                '更改列的字段名
                gvwChargeRecord.Columns(0).HeaderText = "卡号"
                gvwChargeRecord.Columns(1).HeaderText = "充值教师"
                gvwChargeRecord.Columns(2).HeaderText = "充值金额"
                gvwChargeRecord.Columns(3).HeaderText = "充值日期"
                gvwChargeRecord.Columns(4).HeaderText = "充值时间"
                If gvwChargeRecord.Rows.Count = 0 Then
                    MsgBox("卡号不存在")
                    Exit Sub
                    txtCardNo.Focus()
                Else
                    gvwChargeRecord.AutoGenerateColumns = True   '自动添加新列
                    gvwChargeRecord.ReadOnly = True  '所有的单元格设为只读,防止修改
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.ToString())
        End Try
    End Sub






这是一篇功能型博客,一些其他的涉及到的使用方法和注意事项还会在以后总结出来,现在还是一篇“板砖之作”。

这就是我目前对这个控件使用的理解,大家如果对代码有什么好的意见,欢迎提出!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: