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

时间:2015-07-23 14:02:06

标签: c# .net class datagridview private-members

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

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,它也会在属性为私有时填充数据。

有人可以解释一下

1 个答案:

答案 0 :(得分:2)

DataGrid自动生成列,具体取决于它所绑定的类的属性,除非您手动定义列。

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

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