给DataGridView绑定数据源比較简单,方法主要有两种:

1、直接在控件属性中绑定数据源,这样的方法最简单,但它是直接连接数据库的,这样就和传DataTable的后果差点儿相同了,所以还是尽量避开吧。

2、通过代码将实体集合作为DataGridView的数据源,如今以《添加删除用户》窗口为例来简介下

窗口界面

功能介绍:当用户级别改变时,表格控件中显示该用户级别的用户信息

 

编辑控件:右击控件选中“加入列”——进行列的加入和编辑,编辑时须要用的仅仅有三个

 

(1)是列名,这个可改可不改(2)是与实体中相应的属性名称(3)是表头信息,这三个也能够在代码中写。假设不设置Name属性,在载入数据的时候将自己主动改为作为数据源的实体的属性名,在删除不须要字段的时候能够用得着。

U层代码

    Private Sub cboLevel_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboLevel.SelectedIndexChanged
Dim euserIn As New E_UserInfo
Dim bselectUser As New B_AddRemoveUser
Dim userList As New List(Of E_UserInfo)
'Dim userBindList As New BindingList(Of E_UserInfo) '将BindingList作为数据源遇到问题,先省略 euserIn.Level = cboLevel.GetItemText(cboLevel.SelectedItem) '获取用户级别组合框的当前文本,并传递给E层
userList = bselectUser.SelectUserInfo(euserIn) '将查询到的信息保存在euserStore中 '假设集合中没有记录,退出该过程
If userList.Count = 0 Then
Exit Sub
End If dtgUserInfo.AutoGenerateColumns = False '不同意自己主动加入列
dtgUserInfo.DataSource = userList '把泛型集合当做DataGridView的数据源 '删除不须要显示的字段
dtgUserInfo.Columns.Remove("Password")
dtgUserInfo.Columns.Remove("Level") '将DataGridView的标题改为中文,在控件属性中已经设置,这里就能够省去了
'dtgUserInfo.Columns(0).HeaderText = "username"
'dtgUserInfo.Columns(1).HeaderText = "姓名"
'dtgUserInfo.Columns(4).HeaderText = "开户人" End Sub

B层代码

Imports Entity.entity
Imports DAL.dal
Imports System.Collections
Public Class B_AddRemoveUser
Public Function SelectUserInfo(ByVal user As E_UserInfo) As IList
Dim userList As New List(Of E_UserInfo)
Dim dUser As New D_UserDAO userList = dUser.SelectUserInfo(user) '将用户信息传入D层 Return userList '返回用户信息
End Function Public Function DeleteUser(ByVal user As E_UserInfo) As Boolean
Dim dUser As New D_UserDAO
Return dUser.deleteUser(user) '返回数据库删除用户是否成功
End Function
End Class

D层代码

    Public Function SelectUserInfo(ByVal user As E_UserInfo) As IList
Dim mySqlHelper As New SqlHelper '实例化SqlHelper
Dim dt As New DataTable '定义一个DataTable数据表
Dim cmdText As String = "Select UserID, UserName, Operator From T_UserInfo Where Level=@Level"
Dim paras As SqlParameter() = {New SqlParameter("@Level", user.Level)} '将參数传入SqlHelper
dt = mySqlHelper.ExecSelect(cmdText, CommandType.Text, paras) '运行查询 Dim myList As New List(Of E_UserInfo) '定义一个集合用来保存转化后的泛型集合
myList = ConvertHelper.ConvertToList(Of E_UserInfo)(dt) '调用实体转换类,将DataTable转换为泛型集合 Return myList '返回实体集合
End Function

这样就是能用DataGridView显示我们须要的信息了,这样的方法easy忽略导致出错的地方有两个:1、数据库表中的字段名和实体中的属性名不一样。2、实体的属性名和DataGridView中自己定义的数据名不一样。如果是由于第2种出错,那仅仅能说太粗心了。如今给出第1种的解决方法,先如果一个情景:数据库表中“username”的字段名是“UserNo”,实体中对应的属性名是“UserID”,这样就导致了信息不匹配的问题,所以须要转化一下,最简单的就是利用As把上边D层的查询代码改为

"Select  UserNo As UserID , UserName, Operator From T_UserInfo Where Level=@Level"

As对数据库字段的转换功能很有意思,本来想用数据库演示一下的,仅仅是SQL软件还没好就算了吧……

DataGridView绑定数据源的更多相关文章

  1. C# DataGridView绑定数据源的几种常见方式

    开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定. 1. 简单的数据绑定 例1 using (SqlConnection conn = new SqlConnect ...

  2. DataGridView绑定数据源的几种方式

    使用DataGridView控件,可以显示和编辑来自多种不同类型的数据源的表格数据. 将数据绑定到DataGridView控件非常简单和直观,在大多数情况下,只需设置DataSource属性即可.在绑 ...

  3. 章鱼哥出品—VB.NET DataGridView绑定数据源 "与货币管理器的位置关联的行不能设置为不可见" 问题的解决

    DtaGridView绑定数据源后.假设想让数据条件显示的话,直接使用  My_Row.Visible = False就会出错.错误类型是 "与货币管理器的位置关联的行不能设置为不可见&qu ...

  4. DataGridView绑定数据源后添加行

    本文链接:https://blog.csdn.net/u012386475/article/details/88639799 在已经绑定数据源时,无法以Add的方式方式添加行,会报错 解决方法一: D ...

  5. 【转】DataGridView绑定数据源的几种方式

    第一种:DataSet ds=new DataSet (); this.dataGridView1.DataSource=ds.Table[0]; 第二种:DataTable dt=new DataT ...

  6. C# 关于DataGridView 绑定数据源时列名窜位置 的处理

    只需要写一句话:dataGridView1.AutoGenerateColumns = false; 代码提示中的解释:获取或设置一个值,该值指示在设置System.Windows.Forms.Dat ...

  7. c# datagridview绑定数据源(BindingList<class>)中的现象 待查

    现象1: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

  8. C# DataGridView绑定数据源

    第一种: DataSet ds=new DataSet (); ]; 第二种: DataTable dt=new DataTable(); this.dataGridView1.DataSource= ...

  9. C# Winform中DataGridView绑定后DataGridViewCheckBoxColumn无法显示的问题

    在控件DataGridView绑定数据源后,发现DataGridViewCheckBoxColumn不能显示当前的check值.经过一番努力,现将完整代码奉献出来,仅供参考. 错误代码: /*禁止自动 ...

随机推荐

  1. [置顶] think in java interview-高级开发人员面试宝典(七)

    上两周研发任务太紧了,所以担搁了一下,我们继续我们的面试之旅. 下面是一个基于图书系统的15道SQL问答,供大家参考 问题描述:本题用到下面三个关系表:CARD     借书卡.   CNO 卡号,N ...

  2. IOS线程操作(3)

    采用CGD更有效的比前两个(它被认为是如此,有兴趣的同学可以去试试). 这是推荐的方式来使用苹果的比较. GCD它是Grand Central Dispatch缩写,这是一组并行编程C介面. GCD是 ...

  3. windows server 搭建radius服务器

    使用ISA 2004搭建PPTP/L2TP 服务器后,VPN账号是在radius服务器上的,使用window server 2003搭建radius服务器,需要添加组件->internet验证服 ...

  4. Windows Server时间服务器配置方法

    1 时间服务器经常会碰到客户端机器需要和服务器在时间上保持同步,否则会出现各种问题,特别是有时间相关的触发功能的时候. 为解决各设备间时间统一的问题,我们可在网络中设置一台服务器使其作为基准时间,其它 ...

  5. Conversion to Dalvik format failed: Unable to execute dex

    最近莫名奇妙遇到“Conversion to Dalvik format failed: Unable to execute dex”错误,stackoverflow以后得到结果 把项目中classp ...

  6. DirectX11 学习笔记9 - 动态顶点缓冲区 和 静态顶点缓冲区

    首先,什么是缓冲区: 缓冲区是.fx文件的影响(.ps .vs还) 一种数据结构,其定义了.为.fx和cpp数据通信文件. 例: //--------------------------------- ...

  7. Ubuntu 13.10 安装 Unity 8 试用截图

    关于 Unity 8 有很多报道,Unity 8 相对于 Unity 7 变化相当大,这是 Ubuntu 团队打造的一款通用于 PC.手机.平板的桌面. Unity 8 已经登陆 ubuntu 13. ...

  8. leetcode先刷_Climbing Stairs

    水的问题. 以为很常见.青蛙跳楼梯.能跳一步可以跳两步,它实际上是一个斐波那契数. 注意.空间O(1). class Solution { public: int climbStairs(int n) ...

  9. Linux注意到Makefile

    规则: 目标 : 依靠 命令 make是怎样工作的: (1)make在当前文件夹下寻找makefile或Makefile. (2)假设找到,他会寻找文件里的第一个目标文件(target).并把这个文件 ...

  10. [033] 微信公众帐号开发教程第9篇-QQ表情的发送与接收

    我想大家对QQ表情一定不会陌生,一个个小头像极大丰富了聊天的乐趣,使得聊天不再是简单的文字叙述,还能够配上喜.怒.哀.乐等表达人物心情的小图片.本文重点要介绍的内容就是如何在微信公众平台使用QQ表情, ...