我需要提供一种方法来允许用户选择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
答案 0 :(得分:2)
不,你不能这样做。只有ListItem才有效。另一种方法是为每个主题设置一个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