Почему в 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 ответ

DataGrid автоматически генерирует столбцы в зависимости от свойств класса, с которым он связан, если только вы не определяете столбцы вручную.

Я бы посоветовал вам сделать ваши свойства общедоступными и иметь частные поля для манипулирования данными. Пример:

private string _surname;
public string Surname 
{ 
     get
     {
          return _surname;
     }
     set
     {
          _surname = value;
     } 
}
Другие вопросы по тегам