最初の列には、大学のリストを表示しています。各大学には、2列目に表示されている複数のコースがあります。
ユーザーの選択に課される制限:
ユーザーが大学(MITなど)を選択する場合、選択した大学にのみ対応するコースを選択できるようにする必要があります(この場合はコンピューターサイエンスと機械工学)。
jQueryを使用してこの機能を実現するにはどうすればよいですか?
次のデータをネストされたリピーターにバインドしています。
public string currentCollege { get; set; }
Dictionary<string, List<string>> colleges;
class College
{
public College(string s)
{
Course = s;
}
public string Course { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
colleges = new Dictionary<string, List<string>>();
colleges.Add("mit", new List<string>(new string[] { "computer science", "mechanical engg." }));
colleges.Add("caltech", new List<string>(new string[] { "electrical engg", "cryptography"}));
colleges.Add("harvard", new List<string>(new string[] { "language", "arts", "science" }));
rptColleges.DataSource = colleges;
rptColleges.DataBind();
}
protected void rptColleges_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rptCourseNow = (e.Item.FindControl("rptCourses") as Repeater);
rptCourseNow.DataSource = colleges[currentCollege];
rptCourseNow.DataBind();
}
}
マークアップは次のとおりです-
<asp:Repeater ID="rptColleges" runat="server" OnItemDataBound="rptColleges_ItemDataBound">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:RadioButton ID="rbCollege" runat="server" value=<%# DataBinder.Eval((KeyValuePair<string, List<string>>)Container.DataItem, "Key") %> />
<%# currentCollege = (string)DataBinder.Eval((KeyValuePair<string, List<string>>)Container.DataItem, "Key") %>
</td>
<td>
<asp:Repeater ID="rptCourses" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:RadioButton ID="rbCourse" value="<%#Container.DataItem %>" runat="server" />
<%#Container.DataItem %>
</li>
</ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
ご協力ありがとうございました。