Динамическое добавление списка флажков или списка переключателей с переменной длиной в gridview

В моем развивающемся приложении онлайн-тестирования я сегодня наткнулся на новую возможность, касающуюся опций radiobuttonlist / checkboxlist переменной длины. Поскольку в общих / обычных системах у нас есть только 4 варианта (которые даже я считаю очень жесткими и неполными), мой клиент попросил меня создать тест, который на дисплее дает 4 или 5 вариантов (несколько или один выбор, также известный как радио или флажок ) на основе записи в БД.

Теперь БД не проблема, все в порядке, кроме того, как изменить длину элемента управления или показать этот конкретный элемент управления на основе заданных данных в gridview. Например, у нашего gridview есть метка для вопроса и номер вопроса, а также два контрольных списка элементов управления и список радио-кнопок для параметров, которые должны быть заполнены пользователем, поэтому вкратце он хочет:

Список радиокнопок:

  • Отобразить 4 варианта, если значение db для multioptions равно false, а общий вариант равен 4
  • Отобразить 5 вариантов, если значение db для multioptions равно false, а общий вариант равен 5

Список флажков:

  • Отобразить 4 варианта, если значение db для multioptions равно true, а общий вариант равен 4
  • Отобразить 5 вариантов, если значение db для мультипараметров - true, а общий вариант - 5

Итак, это общая идея, и я не могу понять, как отобразить эти вещи в моем представлении сетки, что «необходимо для отображения этих данных в виде листа OMR», и я бы даже не стал беспокоить вас, ребята, если бы это было нормальным тест с кнопкой «Следующий вопрос», где мы отображаем только один вопрос за раз или простой статический вопрос с 4 вариантами.


person Alok    schedule 30.04.2013    source источник
comment
вы можете сделать это в событии с привязкой к строке   -  person Amit Singh    schedule 30.04.2013
comment
не могли бы вы подробнее рассказать о логике, я не спрашиваю здесь код   -  person Alok    schedule 30.04.2013
comment
Я думаю о привязке Objectdatasource, которая сделает эту работу, в любом случае, если я выясню это до вас, ребята, я опубликую решение :)   -  person Alok    schedule 30.04.2013
comment
источник данных объекта не поможет вам найти элемент управления в привязке данных и добавить к нему элемент   -  person Amit Singh    schedule 01.05.2013


Ответы (1)


Выполнить это требование можно следующим образом.

  1. Вы можете использовать вложенные элементы управления (gridview + список флажков)
  2. Сначала создайте элемент управления gridview только для вопросов
  3. Внутри этого gridview создайте поле шаблона и удалите элемент управления списком флажков.
  4. Теперь у вас есть сетка со списком флажков для каждой строки / вопроса (часть проблемы решена)
  5. У вас должны быть таблицы базы данных TblQuestions и TblAnswers соответственно
  6. Теперь просто поместите источник данных (SQLDataSource, ObjectDataSource) в поле шаблона, которое мы создали ранее, и укажите свои ответы SQL-запрос (select * from TblAnswers where questionId=@questionId) и создайте параметр выбора для идентификатора вопроса в вашем источнике данных
  7. Внутри RowDataBoundEvent вашего gridview вы можете использовать FindControl, чтобы найти checkboxList и элемент управления источником данных
  8. Затем вы можете указать параметр выбора с идентификатором строки gridview и связать список флажков с желаемыми ответами

    protected void yourGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
           // Find your controls
           CheckBoxList yourChkBoxList = e.Row.FindControl("yourChkBoxListName") as CheckBoxList;
           ObjectDataSource odsTemp=e.Row.FindControl("yourDataSourceName") as ObjectDataSource;
    
     if (odsTemp !=null)
        {
           odsTemp.SelectParameters[0].DefaultValue = yourGridView.DataKeys[e.Row.RowIndex][0].ToString();
           yourGridView.DataBind();
        }
     }
    }
    

    Обновить

    You would not use a label control for questions. You would fetch them from database & bind questions to a gridview.
    
person Zo Has    schedule 02.05.2013
comment
хорошо, но это только половина их, так как их четыре условия должны быть выполнены, и нам нужны как checkboxlist, так и radiobuttonlist в соответствии с типом вопроса. пожалуйста, посмотрите возможные рассматриваемые случаи - person Alok; 03.05.2013
comment
@Alok Я думаю, что мой ответ соответствует вашим требованиям. - person Zo Has; 03.05.2013
comment
@ Алок рад, что мне помогли! знак равно - person Zo Has; 06.05.2013