У меня есть этот пользовательский список radiobuttonlist, который я использую на своей странице .aspx, чтобы можно было заставить GroupName реально работать, так как у меня будет 2 элемента управления RadiobuttonList на одной странице .aspx:
public class CustRadioButtonList : RadioButtonList, IRepeatInfoUser
{
void IRepeatInfoUser.RenderItem(ListItemType itemType, int repeatIndex, RepeatInfo repeatInfo, HtmlTextWriter writer)
{
RadioButton radioButton = new RadioButton();
radioButton.Page = this.Page;
radioButton.GroupName = "radioButtonGroup";
radioButton.ID = this.ClientID + "_" + repeatIndex.ToString();
radioButton.Text = this.Items[repeatIndex].Text;
radioButton.Attributes["value"] = this.Items[repeatIndex].Value;
radioButton.Checked = this.Items[repeatIndex].Selected;
radioButton.TextAlign = this.TextAlign;
radioButton.AutoPostBack = this.AutoPostBack;
radioButton.TabIndex = this.TabIndex;
radioButton.Enabled = this.Enabled;
radioButton.RenderControl(writer);
}
}
Так что это просто простое расширение, в котором я установил GroupName, чтобы быть уверенным, что все радиокнопки, созданные этим RadioButtonList, имеют одинаковое GroupName, так что теперь, если кто-то выбирает значение из RadiobuttonList1, он отменяет выбор любого значения, выбранного в Radiobutton2. и наоборот (так что они являются взаимоисключающими наборами радиокнопок).
Примечание: Списки радиобуттон определенно связываются с помощью вызова метода, который заключен в проверку для! Page.IsPostBack, так что проблема здесь не возникает.
Вот пример, где я использую его на своей странице .aspx:
<aj:CustRadioButtonList checked="false" ID="rblEmail" runat="server" />
<aj:CustRadioButtonList checked="false" ID="rblReason" runat="server" />
Здесь, в моем коде, я проверяю selectedValue из rblEmail в пределах нажатия кнопки даже на моей странице ... но он всегда возвращает пустую строку , даже если я выбрал пункт в списке:
protected void btnContinue_Click(object sender, EventArgs e)
{
_actionID = rblEmail.SelectedValue;
Я провел целый день, пытаясь выяснить, почему я продолжаю получать пустую строку, когда ясно выбрал значение в rblEmail. То же самое относится и к другому радиобаттонлисту rblReason. В любом случае при проверке из-за кода я получаю пустую строку для SelectedValue.
Если вы посмотрите на разметку, вот как это выглядит:
<table id="rblEmail" checked="false" border="0">
<tr>
<td><input id="rblEmail_0" type="radio" name="radioButtonGroup" value="0" /><label for="rblEmai_0">All Offers</label></td>
</tr><tr>
<td><input id="rblEmail_1" type="radio" name="radioButtonGroup" value="1" /><label for="rblEmail_1">week</label></td>
</tr><tr>
<td><input id="rblEmail_2" type="radio" name="radioButtonGroup" value="2" /><label for="rblEmail_2">month</label></td>
</tr><tr>
<td><input id="rblEmail_3" type="radio" name="radioButtonGroup" value="3" /><label for="rblEmail_3">Holiday</label></td>
</tr>
</table>
</div>
...
<table id="rblReason" checked="false" border="0">
<tr>
<td><input id="rblReason_0" type="radio" name="radioButtonGroup" value="1" /><label for="rblReason_0">I receive</label></td>
</tr><tr>
<td><input id="rblReason_1" type="radio" name="radioButtonGroup" value="2" /><label for="rblReason_1">I have no need</label></td>
</tr><tr>
<td><input id="rblReason_2" type="radio" name="radioButtonGroup" value="3" /><label for="rblReason_2">Other</label></td>
</tr>
</table>