先来写一个Student类
1 public class Student 2 3 { 4 5 public int StudentNo { get; set; } 6 7 public string StudentName { get; set; } 8 9 public string Address { get; set; } 10 11 public int GradeId { get; set; } 12 13 14 15 public string Gender { get; set; } 16 17 public string LoginPwd { get; set; } 18 19 public DateTime Birthday { get; set; } 20 21 public string Email { get; set; } 22 23 public string Phone { get; set; } 24 25 26 27 }
然后有一个Result类
public class Result { public Student Student { get; set; } public Subject Subject { get; set; } public DateTime ExamDate { get; set; } public int StudentResult { get; set; } }
首先,我们看到的这三个类中,Result类中有Student和Subject的对象, 当我们通过List<Result>拿到符合条件的数据后,就可以将List<Result>中的数据绑定到DataGridView上了,但是DataGridView控件上绑定result时学生姓名和科目名称的数据没有出来
现在我们有四种解决方法:
方法一:通过重写ToString()方法的方案解决
01.如果能保证在实体Result中的Student属性到时候在界面上行只显示Student中的一个属性,例如StudentName,那么我们重写Student的ToString()方法来达到目的。
重写代码如下:
public override string ToString() { return StudentName; }
这时候只需要设置DataPropertyName的值为Student,即可,因为设置了Student后,会自动调用它的ToString()方法将StudentName返回。
但是,该方法的确定是:返回值,只能用一个属性。
方法二:
添加辅助列
注意事项:01.该方法的学生姓名列和科目列的DataPropertyName不能给值
02.辅助列要隐藏
03.根据辅助列的值去查询数据库中对应的名称
所以:
Result类
public class Result { public int StudentNo { get; set; } public int SubjectId { get; set; } public DateTime ExamDate { get; set; } public int StudentResult { get; set; } }