zoukankan      html  css  js  c++  java
  • DataGridView 绑定list类, 如何只显示list集合中类的部分属性

    一,显示实体的全部属性

                当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 = "密码"
    	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 的全部属性,只需要显示一部分,比如,我们在显示教师信息的时候,可能不需要显示教师的密码,这时候该怎么办呢?

               方法一: 加载完所有数据后手动移除列

                        如上图中,如果我想移除密码这一列,只需在加载完所有数据后,再加上一句代码:

    '加载完所有数据后手动移除密码这一列
                myDataGrid.Columns.Remove("Pwd")

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


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

                  方法二:设置DataPropertyName属性

                             例如,我现在只想显示用户名,首先,右击窗体上的DataGridView控件,然后选择编辑列:

    添加一个叫用户名的列,然后设置列的DataPropertyName属性,通过这个属性,可以设置绑定到实体的某个属性值,datatable的某个列等。  这里的 DataPropertyName 值要跟实体的属性名对应


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

    <span style="font-size:18px;">       myDataGrid.AutoGenerateColumns = False  '不允许自动添加列
            myDataGrid.DataSource = myList '设置数据源</span>
    --如果是数据库查询出来的list转换为列表table
    datapropertyname应该为转换表的字段(不区分大小写)
         这样就ok了~

            运行下,可以看到这种效果:

           

             小结:

                       真心感觉DataGridView这个空间非常好用,直接绑定数据源就可以显示数据。

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

                 

              

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

     
  • 相关阅读:
    phpcms 栏目图片循环调用
    phpcms调栏目图片
    Java 面向对象 --单例模式
    Java 面向对象 --包装类
    Java 面向对象 --匿名内部类
    Java面向对象--instanceof关键字
    Java 面向对象 --Object类
    Java 面向对象 --多态性
    Java 面向对象 --接口
    Java 面向对象 --抽象类
  • 原文地址:https://www.cnblogs.com/Tannhuser/p/6848067.html
Copyright © 2011-2022 走看看