日期:2014-05-18  浏览次数:20852 次

关于dataGridView显示数据的问题
这个项目中涉及到两张表联查 sql语句:select Teacher.name,Teacher.age,Teacher.teachYear,Grade.GradeName from Teacher inner join Grade on Teacher.gradeId = Grade.GradeId  

我在实体类中的 Teacher类添加了一个Grade类型的字段和属性 在构造中new了一下 如下:
C# code

public Teacher(string name,int age ,int teachYear,string greadName)
       {
           this.Name = name;
           this.Age = age;
           this.TeachYear = teachYear;
           this.Gread = new Grade();
           Gread.GreadName = greadName;
       }


查出来后  
C# code

           while (read.Read())
           {
               Teacher teacher = new Teacher();
               teacher.Name = Convert.ToString(read["name"]);
               teacher.Age = Convert.ToInt32(read["age"]);
               teacher.TeachYear = Convert.ToInt32(read["teachYear"]);
               teacher.Gread.GreadName = Convert.ToString(read["GradeName"]);
               list.Add(teacher);
            } 


返回list
这时候 lisi所包含的数据


返回到UI我直接
  dataGridView1.AutoGenerateColumns = false;
  dataGridView1.DataSource = list;
然后在控件上给DataPropertyName赋值 但是 年级的那个值(GradeName)怎么也显示不出来 
怎么才能dataGridView显示 实体类中其他类型的属性呢



------解决方案--------------------
直接用DataTable绑定。。。
------解决方案--------------------
探讨

直接用DataTable绑定。。。

------解决方案--------------------
根据LZ描述
因为 dataGridView1.DataSource = list;
所以 dataGridView 显示出了list的数据
第一列 list.Name 然后是Age ,TeachYear 
没显示出来的那一列绑定的 是Gread,而不是Gread.GradeName.

如2,3楼所即讲,为何不做一个DataTable呢
或者直接在Teacher理直接 定义一个 类似Name,age,TeachYear 之类的变量