ASP.net - Динамично показване на контроли

Разработвам проект Quiz. В DetailsView искам да покажа въпроса и отговорите.

Броят на отговорите варира за всеки въпрос. Кажете пример

1 ) C# Support

   (i)  Generics
   (ii) LINQ
   (iii)EntLib  

2 ) Find the odd one
    (i)  DB2
    (ii) Oracle
    (iii)MS-Access 
    (iv) Sql Server
    (v)  Javascript

така че не мога да коригирам броя на радио бутоните. Някои въпроси може да имат няколко отговора. Затова трябва да показвам квадратчета за отметка вместо радио бутони.

Моят въпрос е как да генерирам радио бутони или динамично поставени отметки?


person user245378    schedule 07.01.2010    source източник


Отговори (2)


Създайте RadioButtonList или CheckBoxList за всеки въпрос и използвайте колекцията му Items, за да добавите отговорите.

Много прост пример в C#:

class Question
{
    public string QuestionText;
    public List<string> Answers;
}

protected void AddQuestionsToContainer(Control container, List<Question> questions)
{
    foreach (Question q in questions)
    {
        var qt = new Label();
        qt.Text = q.QuestionText;
        container.Controls.Add(qt);

        var rbl = new RadioButtonList();

        foreach (string answer in q.Answers)
        {
            rbl.Items.Add(new ListItem(answer));
        }

        container.Controls.Add(rbl);
    }
}
person Dan Story    schedule 07.01.2010

Мисля, че вашият въпрос по-конкретно е как да решите кой въпрос от теста има множество отговори.

Ако съм прав, трябва да имате допълнителна колона като isMultipleAnswers BIT в таблицата в DB (или какъвто и да е източникът, трябва да имате флаг за всеки въпрос) и да обработвате събитие за DetailView като DataBinding, проверете стойността за това поле, въз основа на което добавете RadioButtonList или CheckBoxList.

Надявам се това да помогне!

BTW, защо не използвате Repeater??

person Manish    schedule 07.01.2010