Если ваши переключатели находятся за пределами панели обновления (и должны быть), выбранный / проверенный элемент никогда не сработает из-за отсутствия JavaScript на его теге <input>
, что логично в том смысле, что Страница думает, что элемент уже выбран, так почему он должен запускаться обратно на сервер при щелчке по нему?
Но это, очевидно, вызывает проблемы в этом сценарии, потому что, как триггеры для панели обновления, он никогда не «перерисовывает» себя, чтобы отразить, что выбранный элемент изменился.
Мой обходной путь для этого состоит в том, чтобы "перекрасить" переключатели, также имея их в их собственном <asp:UpdatePanel>
контроле:
<asp:UpdatePanel ID="RadioButtonUpdate" runat="server">
<ContentTemplate>
<asp:RadioButton ID="rdoSpecifiedDates" runat="server" class="bodycontent"
GroupName="status" OnCheckedChanged="rdoSpecifiedDates_CheckedChanged" AutoPostBack="true" />
<asp:RadioButton ID="rdoDateRange" runat="server" class="bodycontent"
GroupName="status" OnCheckedChanged="rdoDateRange_CheckedChanged" AutoPostBack="true" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="Update" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtDays" runat="server" CssClass="bodycontent" MaxLength="6" ReadOnly="true"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="rdoDateRange" />
</Triggers>
</asp:UpdatePanel>
Мне кажется, что это самое чистое решение за пределами установки радиокнопок на панели обновления, которую вы хотите обновить.