我似乎无法弄清楚这组代码有什么问题。我有我的前端:带有字符串和对象列表的嵌套中继器
<asp:Repeater ID="ArchiveYearRepeater" runat="server" OnItemDataBound="ArchiveYearRepeater_ItemDataBound">
<ItemTemplate>
<div class="ArchiveYear">
<h3><% DataBinder.Eval(Container.DataItem); %></h3>
<ul>
<asp:Repeater ID="ArchivePostRepeater" runat="server">
<ItemTemplate>
<li><a href="<% DataBinder.Eval(Container.DataItem, "URL"); %>"><% DataBinder.Eval(Container.DataItem, "Title"); %></a></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
</ItemTemplate>
</asp:Repeater>
然后,我有我的代码背后:
protected void Page_Load(object sender, EventArgs e)
{
ArchiveYearRepeater.DataSource = GetYears();
ArchiveYearRepeater.DataBind();
}
protected List<ArchiveItem> GetArchiveItems()
{
List<ArchiveItem> ArchiveItems = new List<ArchiveItem>();
List<BlogPost> posts = BlogPostManager.GetBlogPosts(0, BlogPostManager.BlogSection());
foreach (BlogPost post in posts)
{
ArchiveItem archiveRecord = new ArchiveItem();
archiveRecord.Title = post.Title;
archiveRecord.Link = post.URL;
archiveRecord.Date = post.Date;
archiveRecord.Year = post.Date.ToString("yyyy");
ArchiveItems.Add(archiveRecord);
}
return ArchiveItems;
}
protected List<string> GetYears()
{
List<string> Years = new List<string>();
List<ArchiveItem> ArchiveItems = new List<ArchiveItem>();
ArchiveItems = GetArchiveItems();
foreach (ArchiveItem item in ArchiveItems)
{
if(!Years.Contains(item.Year)){
Years.Add(item.Year);
}
}
return Years;
}
private void ArchiveYearRepeater_ItemDataBound(object sender,
System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
if ((item.ItemType == ListItemType.Item) ||
(item.ItemType == ListItemType.AlternatingItem))
{
Repeater ArchivePostRepeater = new Repeater();
ArchivePostRepeater = (Repeater)item.FindControl("ArchivePostRepeater");
ArchivePostRepeater.DataSource = GetArchiveItems();
ArchivePostRepeater.DataBind();
}
}
我努力使最外层的中继器重复在博客帖子的“主数据集发现岁月”。然后,我试图写出当年的每一篇文章。我正在使用SharePoint,所以这件事是抛出错误,我似乎不能调试。
-1,它抛出了什么错误?它在哪里抛出错误? –