DataGridView绑定list类,如何只显⽰list集合中类的部分属性⼀,显⽰实体的全部属性
当DataGridView的列名就是Class T的属性的时候,这时,只需要绑定数据源,然后⼿动更改列名就好。
<span > '将dt转换为泛型集合
myList = vertToList(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数据源
例如,我现在只想显⽰⽤户名,⾸先,右击窗体上的DataGridView控件,然后选择编辑列:
添加⼀个叫⽤户名的列,然后设置列的DataPropertyName属性,通过这个属性,可以设置绑定到实体的某个属性值,datatable的某个列等。这⾥的 DataPropertyName 值要跟实体的属性名对应。
之后,我们在代码⾥⾯写⼊
<span >      myDataGrid.AutoGenerateColumns = False  '不允许⾃动添加列
myDataGrid.DataSource = myList '设置数据源</span>
--如果是数据库查询出来的list转换为列表table
datapropertyname应该为转换表的字段(不区分⼤⼩写)这样就ok了~
运⾏下,可以看到这种效果:
⼩结:
真⼼感觉DataGridView这个空间⾮常好⽤,直接绑定数据源就可以显⽰数据。
⽽且如果在D层,查询完成之后,就将datatable转化为实体集,当结果传到U层DataGridView显⽰的时候,直接指定dataSource为实体集合,那么,整个过程没有像以前vb中MSHFlexGrid控件那样:
这个过程每次都要⼀⾏⼀⾏的赋值,避免了filds属性在指定时出错的问题,⽽且代码更简洁了,我们的⼯作量也⼤⼤减少了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。