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

 

转载于:https://www.cnblogs.com/Tannhuser/p/6848067.html

当你在Windows Forms的DataGridView控件中绑定List集合数据时,如果表格出现但不显示数据,可能有以下几个原因: 1. 数据绑定方式不正确:确保你已经正确地将数据源设置到了DataGridView的DataSource属性。例如,如果你使用的是泛型List<T>,需要将其转换为适合DataGridView使用的BindingList<T>。 2. 数据项型不支持显示DataGridView默认能够显示很多基本数据型,如string, int等,但如果你的数据项是自定义型,需要确保该型的属性有对应的getDataValue()和setDataValue()方法,或者属性有公共的getter和setter。 3. 列(Columns)没有正确设置:可能DataGridView的列没有与数据源中的属性相对应,或者列的显示方式(如显示文本)没有正确设置。 以下是一个简单的示例代码,展示如何将一个对象列表绑定DataGridView: ```csharp public class Person { public string Name { get; set; } public int Age { get; set; } } List<Person> people = new List<Person>() { new Person { Name = "张三", Age = 30 }, new Person { Name = "李四", Age = 25 } }; // 将BindingList<T>转换后绑定DataGridView DataGridViewPersonBindingList peopleBindingList = new DataGridViewPersonBindingList(people); dataGridView.DataSource = peopleBindingList; ``` 注意:`DataGridViewPersonBindingList` 是一个假设的绑定列表,你需要使用一个适当的BindingList<T>,或者如果需要的话,自己实现一个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值