这个项目中涉及到两张表联查 sql语句:select Teacher.name,Teacher.age,Teacher.teachYear,Grade.GradeName from Teacher inner join Grade on Teacher.gradeId = Grade.GradeId  我在实体类中的 Teacher类添加了一个Grade类型的字段和属性 在构造中new了一下 如下: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;
       }查出来后              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显示 实体类中其他类型的属性呢

解决方案 »

  1.   

    1,跟踪一下,teacher.Gread.GreadName是否有值
    2,你的list就是Teacher吗? 如果是的话,建议你直接改成
         public Teacher()
        {
           string Name {get; set;};
           ...
        }
    这种类型, 然后对list赋值,绑定就可以了
      

  2.   

    +1 直接返回datatable是种好方式
      

  3.   

    根据LZ描述
    因为 dataGridView1.DataSource = list;
    所以 dataGridView 显示出了list的数据
    第一列 list.Name 然后是Age ,TeachYear 
    没显示出来的那一列绑定的 是Gread,而不是Gread.GradeName.如2,3楼所即讲,为何不做一个DataTable呢
    或者直接在Teacher理直接 定义一个 类似Name,age,TeachYear 之类的变量