Могу ли я добавить элементы управления, которые не являются ListItems, в RadioButtonList? - PullRequest
1 голос
/ 22 апреля 2010

Мне нужно предоставить способ, позволяющий пользователям выбирать 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

1 Ответ

2 голосов
/ 22 апреля 2010

Нет, ты не можешь сделать это. Это допустимо только для 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";

В вашем случае используйте placeholdercontrol и добавьте динамически сгенерированные элементы управления и заголовки в коллекцию элементов управления placeholder.

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
...