做到现在了,敲代码的快感又如约而至了。不得不说,敲代码实在是一件富有激情的事儿。
好了,今天谈谈与数据显示有关的控件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
这是一篇功能型博客,一些其他的涉及到的使用方法和注意事项还会在以后总结出来,现在还是一篇“板砖之作”。
这就是我目前对这个控件使用的理解,大家如果对代码有什么好的意见,欢迎提出!