• DataGridView.DataSource= list(Of T)


          注:本文样例的代码承接上篇文章: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")

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



             

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


                  方法二:设置DataPropertyName属性

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



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



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

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

                这样就ok了~


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


           

             小结:

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

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

                 

              



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


  • 相关阅读:
    课堂作业02
    模仿JavaAppArguments.java示例,编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。
    Feign使用Hystrix无效原因及解决方法
    解决Spring Boot 使用RedisTemplate 存储键值出现乱码 xacxedx00x05tx00
    consul怎么在windows下安装
    java运行jar命令提示没有主清单属性
    Maven parent.relativePath
    Maven的pom.xml文件结构之基本配置packaging和多模块聚合结构(微服务)
    redis开启远程访问
    kibana使用
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7206921.html
Copyright © 2020-2023  润新知