==>表tableA生成的实体Model_A里包含子实体Model_Aa
 (子实体Model_Aa属性为表tableA内的部分字段)
 所有数据对象以IList<model>传递.
  问题:
  若我用一gridview绑定表tableA,绑定的是IList<Model_A>.但是,由于某种原因,我又要用gridview绑定表tableA的某些字段,而这些字段包含在这个表实体的子实体Model_Aa内.
 直接<%#Eval("字段名")%>是无法访问得到的.请求解决方案[在不重构实体的情况下].
========================
俺临时的:
   
          private string ob(object id)
          {
                return bll.Model(id).字段.ToString();  //这样子相当于再次访问数据库
          }
          //or 
          private string ob(IList<Model_A> iList,id)
           {
             foreach(Model_A x in iList)
              {
                 if(Model_A.id Equals(id))
                 { 
                    return Model_A.Model_Aa.我要的字段;
                 }
              }
             return null
           }
   

解决方案 »

  1.   

    看不懂你的想法.不过:
    实体Model_A里包含子实体Model_Aa (子实体Model_Aa属性为表tableA内的部分字段) 这样真的是一种应该被枪毙的做法.(如果你是桥接的话)
      

  2.   

    子实体Model_Aa属性为表tableA内的部分字段
    你有要绑定tableA的而Mode1_Aa里没有的字段,那干嘛还要绑定Mode1_Aa呢?
    直接绑定tableA不就行了
      

  3.   


    <%# (((Model_A)Container.DataItem).Model_Aa).属性名 %>
      

  4.   

    Model_A类中通过list访问子类成员属性
      

  5.   

    如果是根据ID得到ob的话可以给GridView 的 DataKeyNames赋值为ID 想要显示的字段绑定为<%#Eval(Model_A.ob(ID))%>
      

  6.   

    这个子实体是怎么说?
    如果这个子实体是你这个父实体的一个属性,那么你可以使用<%# 实体A.子实体的某个属性名 %>这种形式来实现.
    如果子实体只是建立在这个父实体的class里面,那么你可以将之转换为父实体的一个属性,然后再用上述方法实现.
      

  7.   

    参考:http://blog.csdn.net/insus/archive/2008/09/02/2865244.aspx
      

  8.   

    原想法是这样子的:
      假设数据库每个表都有固定的字段,如添加时间,更新时间,IP等我在写库的时候不想多赋值,于是把这部份写成一个固有实体,当然,这个实体也是表实体的子集,只不过是为了新增或更新的时候不用赋值那么多次而已.对于固定的字段,我只需要Model_A.Model.Aa=getModel(add or insert)即可.
    4楼方法可行,谢谢,晚上再结贴