首页 新闻 搜索 专区 学院

在Entity Framework中如何使用repeater绑定一对多或多对多的数据?

0
悬赏园豆:100 [已解决问题] 解决于 2011-12-08 12:01
public class BlogPost
{
public int BolgID
{
get;
set;
}

public int ID
{
get;
set;
}

public string Title
{
get;
set;
}

public virtual ICollection<Category> Category
{
get;
set;
}

public virtual BlogSite BlogSite
{
get;
set;
}
}
public class Category
{
public int ID
{
get;
set;
}

public string Title
{
get;
set;
}

public virtual ICollection<BlogPost> BlogPost
{
get;
set;
}
using(MyDemoContext context = new MyDemoContext())
{
DbSet<BlogPost> post = context.Set<BlogPost>();
            //查出某篇博客的多种分类
var v = post.Include(p=>p.Category).Where(p=>p.ID==5).ToList();
Repeater1.DataSource = v;
Repeater1.DataBind();

}
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table>
<thead>
<td>BlogID</td>
<td>BlogTitle</td>
<td>CategoryTitle</td>//Category的标题
</thead>

</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("ID")%></td>
<td><%# Eval("Title")%></td>
<td><%# Eval("")%></td>//这里怎么绑定
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>

最终显示效果就是列出这篇博客对应的多种分类:

BlogID  BlogTitle  CategoryTitle
5 test C#
5 test asp.net
5 test 技术
问题补充:

原来用dataset就直接绑定了,现在使用EF的code frist查出的数据被分散到一个对象和一个对象集合里,在绑定repeater时怎么处理呢?

lzxy的主页 lzxy | 初学一级 | 园豆:27
提问于:2011-10-20 10:36
< >
分享
最佳答案
0

1.可以不用repeater啊。直接两个循环嵌套。

DbSet<BlogPost> post = context.Set<BlogPost>();
foreach(var item in post)
{
  foreach(var category in item.Category.CreateSourceQuery())
   {
      %>
      <tr>
        <td><%=item.Title%></td>
        <td><%=category.Title%></td>
      </tr>
      <%
   }
)
}


2或者后台两张表join查询,得到一个list,然后repeater绑定这个list
            
收获园豆:100
stevey | 菜鸟二级 |园豆:335 | 2011-10-24 17:23
其他回答(3)
0

在数据库中建立个视图,然后绑定视图就好了

鸟儿鸟儿快点飞 | 园豆:217 (菜鸟二级) | 2011-10-20 10:53

用code frist再去数据库建视图就没啥意义了

支持(0) 反对(0) lzxy | 园豆:27 (初学一级) | 2011-10-20 10:57
0

把对象集合放在对象里

等钩的鱼 | 园豆:10 (初学一级) | 2011-10-20 18:26

对象集合本来就在对象里,现在要绑定repeater怎么展现对象和对象集合的数据?

支持(0) 反对(0) lzxy | 园豆:27 (初学一级) | 2011-10-21 08:33
0

多嵌套一层repeater就可以了吧?

rad | 园豆:28 (初学一级) | 2011-10-21 14:01

嵌套的结果就是

BlogID  BlogTitle  CategoryTitle
5 test C#, asp.net,技术
但是我想要的结果是:
BlogID  BlogTitle  CategoryTitle
5 test C#
5 test asp.net
5 test 技术


支持(0) 反对(0) lzxy | 园豆:27 (初学一级) | 2011-10-21 15:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册