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