所以我已经尝试并广泛搜索,但无法让我的嵌套中继器正常工作。
<asp:Repeater ID="rptrParent" runat="server">
<ItemTemplate>
<dl class="StudentTasksList">
<dt><%# Eval("ClassCode") %></dt>
<asp:Repeater ID="rptrChild" runat="server">
<ItemTemplate>
<dd><%# Eval("Title") %></dd>
</ItemTemplate>
</asp:Repeater>
</dl>
</ItemTemplate>
</asp:Repeater>
C# 代码
private void ListTasks()
{
using (StudentContext syndb = new StudentContext())
{
using (TaskContext dbdb = new TaskContext())
{
// Iterate through each active Class for the current Student finding any tasks not archived for this year
var ClassTasks = (from c in syndb.GetClasses()
where c.Students.Select(y => y.StudentID).Contains(LoggedInUserID)
join t in dbdb.Tasks on c.ClassCode equals t.ClassCode
where !t.Archive.HasValue || t.Archive.HasValue && t.Archive.Value && t.DueDate.Value.Year == DateTime.Now.Year
group c by c.ClassCode);
rptrParent.DataSource = ClassTasks;
rptrParent.DataBind();
}
}
}
所以 ClassCode 来自所选学生的 GetClasses() 方法,而 Title 是在当前班级的任务连接中找到的任何标题的名称。我需要的结果是每个 ClassCode 下具有任何相关任务标题的学生的课程列表。我已经尝试了几种不同的方法,所以这可能不是我想要做的最好的例子。如果有人可以向我展示一个填充嵌套中继器的连接 linq 查询的 LINQ C# 示例,我会很棒,因为我找不到任何足够体面的东西来解决这个问题。
如果班级没有任何任务,我也想知道如何在适当的位置填充 N/A,但我不会碰运气。