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

2024-05-08 02:38

本文主要是介绍【个人机房重构】——DataGridView控件绑定数据 ㈡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


一、设置DataGridView控件


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




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


设置成功:





二、编写代码


U层


'********************************************** 
' 文 件 名:frmCheckRecharge
' 命名空间:UI
' 内    容:
' 功    能:查询学生充值记录
' 文件关系:
' 作    者:杨晨光
' 小    组:
' 生成日期:2014/8/12 22:17:44
' 版 本 号:V1.0.0.0
' 修改日志:
' 版权说明:
'**********************************************Public Class frmCheckRechargePrivate 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 = LUserElsetxtCID.Text = ""     '清空输入卡号文本框txtCID.Focus()      '获得光标输入焦点End IfEnd Sub'自动显示行号Private Sub DataGridView1_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs)Trye.Graphics.DrawString((e.RowIndex + 1).ToString(),e.InheritedRowStyle.Font, New SolidBrush(Color.CadetBlue),e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 5)CatchMsgBox("操作失败")End TryEnd Sub
End Class


B层


Public Class CheckRechargeBLLFunction Check(ByVal user As Entity.RechargeEntity) As List(Of Entity.RechargeEntity)  '返回值为泛型集合'先判断卡号是否为空,为空的话If user.cardNo.ToString.Trim = "" ThenMsgBox("卡号不能为空,请输入卡号!", MsgBoxStyle.Exclamation, "警告")Return NothingEnd If'卡号不为空,则进行赋值判断Dim LUser As List(Of Entity.RechargeEntity)Dim DUser As New DAL.CheckRechargeDALLUser = DUser.Query(user)    '将user值通过D层的Query方法,传到泛型集合LUser中'判断返回的泛型集合是否为空If IsNothing(LUser) = False Then     '不为空Return LUserElseMsgBox("没有此卡号的记录,请重新输入卡号", MsgBoxStyle.Exclamation, "警告")Return NothingEnd IfEnd Function
End Class


D层


Imports System.Data
Imports System.Data.SqlClient
Public Class CheckRechargeDALFunction Query(ByVal user As Entity.RechargeEntity) As List(Of Entity.RechargeEntity)'定义一个操作数据库的助手类Dim MySqlHelper As New SqlHelper'定义对数据库的操作语句Dim strSql As StringstrSql = "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      '返回myListElseReturn NothingEnd IfEnd Function
End Class

三、结果











这篇关于【个人机房重构】——DataGridView控件绑定数据 ㈡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969077

相关文章

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T