почему datagridview не показывает частное свойство типа связанного класса

У меня есть 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 показывает данные
почему?

также в случае, когда я использую listBox вместо Datagridview, он также заполняет данные, даже если свойства являются частными.

может кто-нибудь объяснить


person Amit Bisht    schedule 23.07.2015    source источник
comment
Частный член не может быть доступен другому классу. Можете ли вы показать код, как ListBox был успешно привязан к закрытым членам класса?   -  person Fabio    schedule 23.07.2015


Ответы (1)


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

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

private string _surname;
public string Surname 
{ 
     get
     {
          return _surname;
     }
     set
     {
          _surname = value;
     } 
}
person Dimitris Michailidis    schedule 23.07.2015