注:本文样例的代码承接上篇文章:DataTable填充实体类返回泛型集合。

在D层查询完毕之后。我们将DataTable转化为泛型集合。然后经过中间各层,返回U层。到了这里,问题来了。我们这时候要将这个集合作为数据源绑定到DataGridView上,并将结果显示出来。本文主要介绍的就是怎样将集合显示在DataGridView上的问题。(也许你返回的是datatable或一个实体,它们载入数据的原理是一至滴~)

一。显示实体的所有属性

当DataGridView的列名就是Class T的属性的时候,这时,仅仅须要绑定数据源。然后手动更改列名就好。

      <span style="font-size:14px;"> '将dt转换为泛型集合
myList = EntityHelper.convertToList(Of EntityUser)(dt) TextBox1.Text = myList.Count '在文本框里面显示出查询到的教师数目 If (myList.Count > 0) Then '假设查询到记录
''''将查询到的数据显示到DataGridView中
myDataGrid.DataSource = myList '设置控件的数据源:可是这样设置还不够,由于列的名字显示出来还是英文的。所以,还应该设置没列的名字。 '改动列名
myDataGrid.Columns(0).HeaderText = "卡号"
myDataGrid.Columns(1).HeaderText = "password"
myDataGrid.Columns(2).HeaderText = "教师姓名"
myDataGrid.Columns(3).HeaderText = "教师级别"
myDataGrid.Columns(4).HeaderText = "注冊日期"
myDataGrid.Columns(5).HeaderText = "注冊时间"
myDataGrid.Columns(6).HeaderText = "注销日期"
myDataGrid.Columns(7).HeaderText = "注销时间"
myDataGrid.Columns(8).HeaderText = "上机状态" Else
MsgBox("没有查询到不论什么记录! ")
End If</span>

显示结果例如以下:

二,显示Class T 的部分属性

有时候,我们并非要显示T 的所有属性,仅仅须要显示一部分,比方,我们在显示教师信息的时候。可能不须要显示教师的password,这时候该怎么办呢?

方法一:载入全然部数据后手动移除列

如上图中,假设我想移除password这一列,仅仅需在载入全然部数据后。再加上一句代码:

            '载入全然部数据后手动移除password这一列
myDataGrid.Columns.Remove("Pwd")

当再次显示,结果就例如以下图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGhjMTEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

尽管也能实现想要的效果,可是总感觉这么做有点儿雷,就好像吃了东西再吐出来那样。反正我是不用。还是看看别的方法吧。

方法二:设置DataPropertyName属性

比如。我如今仅仅想显示username,首先,右击窗口上的DataGridView控件。然后选择编辑列:

加入一个叫username的列,然后设置列的DataPropertyName属性,通过这个属性,能够设置绑定到实体的某个属性值,datatable的某个列等。  这里的DataPropertyName值要跟实体的属性名相应

之后,我们在代码里面写入

  <span style="font-size:18px;">       myDataGrid.AutoGenerateColumns = False  '不同意自己主动加入列
myDataGrid.DataSource = myList '设置数据源</span>

这样就ok了~

执行下,能够看到这样的效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGhjMTEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

小结:

真心感觉DataGridView这个空间很好用,直接绑定数据源就能够显示数据。

并且假设在D层。查询完毕之后,就将datatable转化为实体集。当结果传到U层DataGridView显示的时候。直接指定dataSource为实体集合。那么,整个过程没有像曾经vb中MSHFlexGrid控件那样:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGhjMTEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

这个过程每次都要一行一行的赋值,避免了filds属性在指定时出错的问题。并且代码更简洁了。我们的工作量也大大降低了。

DataGridView.DataSource= list(Of T)的更多相关文章

  1. C++: DataGridView::DataSource

    #pragma once #include "Form2.h" namespace cdemo { using namespace System; using namespace ...

  2. 解决DataGridView.DataSource重复赋值而不显示问题

    List<Person> list=new List<Person>(); ;i<;i++) { list.Add(new Person(){........}) } d ...

  3. DataGridView DataSource INotifyPropertyChanged 避免闪烁的方法

    代码说话: dgvPosition就是需要避免闪烁的DataGridView 主要是加2段代码 1.SetStyle 2.datagridview设置DoubleBuffered属性为True pub ...

  4. C# Winfrom DataGridView DataSource绑定数据源后--解决排序问题

    帮助类: public class SortBindingHelper<T> : BindingList<T> { private bool isSortedCore = tr ...

  5. DataGridView DataSource 如何实现排序

    将数据绑定在下面的类中就可以实现排序 public class SortableBindingList<T> : BindingList<T> { private ArrayL ...

  6. [WinForm] DataGridView 绑定 DT && ComboBox 列绑定 Dict

    一  需求介绍 一般像枚举类型的数据,我们在数据库里存储着诸如(1.2.3.4-)或者("001"."002"."003"-)此类,但是界面 ...

  7. [Winform] DataGridView 总结(FAQ)

    Q1.  如何使单元格不可编辑? A:设置 ReadOnly 属性,可以设置的对象包括 DataGridViewRow(行).DataGridViewColumn(列).DataGridViewCel ...

  8. 设置DataSource后DateGridView不显示的问题

    在一个WinForm小程序中,有两处需要用DataGridView控件显示数据.设置DataGridView.DataSource为数据查询结果后,第一个DataGridView可以正常显示数据,而第 ...

  9. C# DataGridView控件清空数据完美解决方法

    C# DataGridView控件绑定数据后清空数据在清除DataGridview的数据时: 1.DataSource为NULL(DataGridView.DataSource= null;)这样会将 ...

随机推荐

  1. Django 中CSRF中间件 'django.middleware.csrf.CsrfViewMiddleware',

    1.Django中CSRF中间件的工作原理及form表单提交需要添加{% csrf_token %}防止出现403错误 CSRF # 表示django全局发送post请求均需要字符串验证功能:防止跨站 ...

  2. [linux小技巧]批量移动文件

    for i in {1..23};do mv test$i/ ../;done

  3. web结对项目

    一.Coding.Net项目地址:        https://git.coding.net/verde/Pair_Work.git 二.对接口进行的设计 看教科书和其它资料中关于Informati ...

  4. Spring 依赖注入(二、注入参数)

    注入参数基本分7类: 1.基本类型值 2.注入bean 3.内部bean 4.注入null值 5.级联属性 6.List,Set,Map集合的注入 7.properties文件的注入(和集合注入基本是 ...

  5. ACM程序设计选修课——1065: Operations on Grids(暴力字符串)

    1065: Operations on Grids Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 17  Solved: 4 [Submit][Sta ...

  6. HDU——1715大菲波数(大数加法)

    大菲波数 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  7. BZOJ1226 [SDOI2009]学校食堂Dining 【状压dp】

    题目 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数表示 ...

  8. python自动化测试报告(excel篇)

    转:https://www.jianshu.com/p/6c5d328bf390 # -*- coding: utf-8 -*- import xlsxwriter def get_format(wd ...

  9. element-ui select组件使用需要注意的

    当在使用select组件的时候,要注意 <el-select v-model="scope.row.state" @change="editDriftStatus& ...

  10. freemarker实现自定义指令和自定义函数

    自定义指令: 1.指令在前台实现 <#macro name param1,param2,param3...paramN> </#macro> 2.指令在后台实现 1.实现Tem ...