Я динамически создаю группу переключателей внутри элемента управления asp: table.
например:
Qst1
RB1
RB2
RB2
Qyst2
RB1
RB2
RB2
Потребность:
Пользователь должен выбрать ответ на каждый вопрос. Я планировал использовать собственный валидатор для этого. Пожалуйста, кто-нибудь наставит меня на это
код:
RadioButton radioButton = new RadioButton();
radioButton.ID = id;
radioButton.ToolTip = text;
radioButton.Attributes.Add(ID_TEXT, id);
radioButton.GroupName = categoryID + QUESTIONS;
radioButton.EnableViewState = true;
radioButton.AutoPostBack = false;
radioButton.Checked = isSelected;
TableCell cell = new TableCell();
cell.Controls.Add(radioButton);
TableRow row = new TableRow();
row.Height = 20;
row.Cells.Add(cell);
table.Rows.Add(row);
Обновление:
Я получил решение с помощью валидатора Custome:
Код:
protected void ValidateSample(object source, ServerValidateEventArgs args)
{
RadioButton rb = new RadioButton();
string rbGroupName = string.Empty;
bool valid = false;
bool groupSelection = false;
foreach (TableRow tr in QuestionTable.Controls)
{
foreach (TableCell tc in tr.Controls)
{
if (tc.Controls[0] is Label)
{
if (QuestionTable.Rows.GetRowIndex(tr) + 1 <= QuestionTable.Rows.Count)
{
rb = (RadioButton)
QuestionTable.Rows[QuestionTable.Rows.GetRowIndex(tr) + 1]
.Cells[0].Controls[0];
if (rb != null)
{
rbGroupName = rb.GroupName;
valid = groupSelection;
groupSelection = false;
}
}
break;
}
if (tc.Controls[0] is RadioButton)
{
rb = (RadioButton)tc.Controls[0];
if (rb.GroupName.Equals(rbGroupName))
{
if (rb.Checked)
{
groupSelection = true;
}
}
break;
}
}
}
args.IsValid = valid;
}
<asp:CustomValidator ID="CustomValidator1" runat="server" class="LabelErrorStyle" Text="*" ErrorMessage="Please select one of the radio button" OnServerValidate="ValidateSample" ValidateEmptyText="true"
Display="Dynamic" >*</asp:CustomValidator>