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属性在指定时出错的问题,而且代码更简洁了,我们的工作量也大大减少了。

     
  • 相关阅读:
    MVC3、如何应用EntityFramework 连接MySql 数据库 Kevin
    DEV EXPRESS Summary Footer 不显示 Kevin
    装饰模式 Kevin
    Dev 控件 GridControl 控件 二次绑定数据源的问题。 Kevin
    System.InvalidOperationException 异常 Kevin
    LINQ to XML Kevin
    代理模式——代码版“吊丝的故事” Kevin
    VS2012 中的设备 面板 Kevin
    maven 学习笔记(三)创建一个较复杂的 eclipse+android+maven 工程
    maven 学习笔记(一)eclipse+android+maven
  • 原文地址:https://www.cnblogs.com/Tannhuser/p/6848067.html
Copyright © 2011-2022 走看看