Я должен позволить позволять пользователям выбирать 1 Предмет, но предметы сгруппированы в Квалификации и таким образом, я хочу показать достижение каждой 'группы'. Моя первая мысль является asp:RadioButtonList, поскольку это предоставляет список опций, из которых только один может быть выбран, но нет никакого средства добавить, разбивают список с заголовками.
Таким образом, я попробовал следующий код - но я не вижу, что LiteralControl добавляется, который заставляет меня думать, что это не допустимый подход.
For Each item As Subject In Qualifications
If item.QualCode <> previousQualCode Then
rblSelection.Controls.Add(New LiteralControl(item.QualName))
End If
rblSelection.Items.Add(New ListItem(item.SubjectName, item.SelectionCode))
previousQualCode = item.QualCode
Next
Нет, вы не можете этого сделать. Допустимо только наличие ListItems. Другой подход - иметь RadioButton для каждого предмета. Дайте им все одно и то же GroupName, что будет означать, что вы можете установить только одно, но вы можете расположить их, как вам нравится, на странице, возможно, под заголовками.
<h3>Qualification 1</h3>
<asp:RadioButton id="rbSubject" runat="server" />
<asp:RadioButton id="rbSubject1" runat="server" />
<asp:RadioButton id="rbSubject2" runat="server" />
<h3>Qualification 2</h3>
<asp:RadioButton id="rbSubject3" runat="server" />
<asp:RadioButton id="rbSubject4" runat="server" />
Скрытый код:
rbSubject.GroupName = "grp1";
rbSubject1.GroupName = "grp1";
rbSubject2.GroupName = "grp1";
rbSubject3.GroupName = "grp1";
rbSubject4.GroupName = "grp1";
В вашем случае используйте элемент управления-заполнитель и добавьте динамически сгенерированные элементы управления и заголовки в коллекцию элементов управления-заполнителей.
For Each item As Subject In Qualifications
If item.QualCode <> previousQualCode Then
placeholder.Controls.Add(New LiteralControl(item.QualName))
End If
create new button here:- sorry Im a C# dev, I dont know the VB syntax and I am editing from my phone, but you should be able to work it out.
placeholder.Controls.Add(btn)
previousQualCode = item.QualCode
Next