==>表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
}
(子实体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
}
实体Model_A里包含子实体Model_Aa (子实体Model_Aa属性为表tableA内的部分字段) 这样真的是一种应该被枪毙的做法.(如果你是桥接的话)
你有要绑定tableA的而Mode1_Aa里没有的字段,那干嘛还要绑定Mode1_Aa呢?
直接绑定tableA不就行了
<%# (((Model_A)Container.DataItem).Model_Aa).属性名 %>
如果这个子实体是你这个父实体的一个属性,那么你可以使用<%# 实体A.子实体的某个属性名 %>这种形式来实现.
如果子实体只是建立在这个父实体的class里面,那么你可以将之转换为父实体的一个属性,然后再用上述方法实现.
假设数据库每个表都有固定的字段,如添加时间,更新时间,IP等我在写库的时候不想多赋值,于是把这部份写成一个固有实体,当然,这个实体也是表实体的子集,只不过是为了新增或更新的时候不用赋值那么多次而已.对于固定的字段,我只需要Model_A.Model.Aa=getModel(add or insert)即可.
4楼方法可行,谢谢,晚上再结贴