Получить выбранный переключатель из динамически сгенерированного набора в ASP.NET - PullRequest
3 голосов
/ 21 июля 2011

Я работаю с ASP.NET (2.0), и мы хотим сгенерировать группу переключателей из источника данных. Это достаточно просто с использованием RadioButtonList, но мы хотим, чтобы текст, связанный с каждой радиокнопкой, имел большее форматирование ... в частности, часть текста должна иметь обычный вес, а некоторые - жирный. Это не похоже на хороший выбор для RadioButtonList.

Используя Repeater, я могу легко создать одну RadioButton для каждого элемента в DataSet, присвоить им одно и то же GroupName, и они будут работать правильно на стороне клиента ... но тогда, когда форма отправлена, это не так Мне понятно, как узнать, какая кнопка была выбрана (на стороне сервера). В отличие от RadioButtonList, у меня нет ни одного содержащего объекта, из которого я могу запросить выбранный элемент.

Мы также могли бы использовать что-то более интерактивное, отправляя информацию обратно на сервер по щелчку переключателя, но мы хотели бы избежать дополнительных обратных передач, если это возможно.

Я что-то упустил?

Ответы [ 3 ]

1 голос
/ 21 июля 2011

Если вы используете ретранслятор, вы можете использовать событие ItemCommand. Подробнее здесь:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemcommand.aspx

1 голос
/ 21 июля 2011

В основном, как ответ @ Мухаммеда - но с использованием повторителя вместо панели.Просто вызывайте этот сабвуфер при отправке формы.

Private Sub rep()
    Dim myRepeater As New Repeater
    Dim myRadio As New RadioButton
    For Each myItem As RepeaterItem In myRepeater.Items
        myRadio = CType(myItem.FindControl("radio1"), RadioButton)
        If myRadio.Checked Then
            'do something
        End If
    Next
End Sub
1 голос
/ 21 июля 2011

Поместите панель RadioButton в панель, затем выполните итерацию коллекции элементов управления Panel

.
foreach (Control ctrl in Panel1.Controls)
    {
        if (ctrl.GetType().Name == "RadioButton")
        {
            if (((RadioButton)ctrl).Checked)
            {
                //...Do your Stuff..
            }
        }
    }
...