我有一个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,它也会在属性为私有时填充数据。
有人可以解释一下
答案 0 :(得分:2)
DataGrid自动生成列,具体取决于它所绑定的类的属性,除非您手动定义列。
我建议您将属性设为公开,并使用私有字段来操作数据。 一个例子:
private string _surname;
public string Surname
{
get
{
return _surname;
}
set
{
_surname = value;
}
}