そのため、広範囲に検索してみましたが、ネストされたリピーターを適切に機能させることができません。
<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 は現在の Class の Tasks 結合で見つかったすべての Title の名前です。必要な結果は、学生のクラスのリストであり、各 ClassCode の下に関連するタスク タイトルが含まれています。私はこれをいくつかの異なる方法で試したので、これは私がやろうとしていることの最良のサンプルではないかもしれません. これを解決するのに十分な適切なものが見つからないため、ネストされたリピーターにデータを入力する結合された linq クエリの LINQ C# の例を誰かが私に見せてくれれば、私は素晴らしいと思います。
また、クラスにタスクがない場合に N/A を入力する方法も知りたいのですが、運が悪いとは思いません。