为什么datagridview不显示绑定类类型的私有属性

本文关键字:属性 类型 datagridview 显示 绑定 为什么 | 更新日期: 2023-09-27 18:04:30

我有一个显示BlclsStaffMember类列表的Datagridview dgvDTMUDetails

public void ShowData()
{
     BlclsStaffMember OBlclsStaffMember = new BlclsStaffMember();
     List<BlclsStaffMember> liStaffMember = new List<BlclsStaffMember>();
     liStaffMember = OBlclsStaffMember.getAllStaffMember();
     dgvDTMUDetails.DataSource = liStaffMember;
}  

类的定义为:

public class BlclsStaffMember 
    {
        private int Perno { get; set; }
        private string Surname { get; set; }
        private string Forename { get; set; }
        private string Name { get; set; }
        public  List<BlclsStaffMember> getAllStaffMember()
        {
            DTMUEntities ODTMUEntities = new DTMUEntities();
            return ODTMUEntities.STAFF_MEMBER.Select(s => new
                    {
                        s.Perno,
                        s.Surname,
                        s.Forename
                    }).ToList().Distinct().Select(s1 => new BlclsStaffMember
                    {
                        Perno = s1.Perno,
                        Forename = s1.Forename,
                        Surname = s1.Surname,
                        Name = s1.Surname + ", " + s1.Forename + " [" + s1.Perno + "]"
                    }).ToList().Distinct().ToList();
        }
}  

问题是: datagridview不显示任何数据时,类的属性被标记为私有

而当属性是公共的,那么datagridview显示数据
为什么?

也在情况下,当我使用listBox代替Datagridview,它也填充数据,即使属性是私有的。

谁能解释一下

为什么datagridview不显示绑定类类型的私有属性

DataGrid根据绑定到的类的属性自动生成列,除非您手动定义列。

我建议您将属性设置为公共,并使用私有字段来操作数据。一个例子:

private string _surname;
public string Surname 
{ 
     get
     {
          return _surname;
     }
     set
     {
          _surname = value;
     } 
}