ASPX ページに 2 つのパネルとテキスト ボックスがあります。両方のパネルには、必須のフィールド バリデータと共に、静的テキストとラジオ ボタンが含まれています。要件は次のとおりです。
- ページが最初に読み込まれるときはいつでも、テキスト ボックスの値が 1000 より大きい場合、最初のパネルが表示されず、2 番目のパネルが表示されます。
- 値が 1000 未満の場合、最初のパネルは表示され、2 番目のパネルは表示されません。
さて、問題は次のとおりです。
テキスト ボックスの値はユーザーが変更できるため、入力した値に応じて、jQuery を使用して適切なパネルを表示する必要があります。各静的テキストにラベルを付けてから、すべてのラベルとラジオ ボタンに同じプロパティを 1 つずつ設定したくありません。それが私が使用した理由です<asp:Panel>
。
- このパネルが ASPX ページにレンダリングされず、表示、非表示が機能しないため、コード ビハインドから visible プロパティを false に設定することはできません。
- コードビハインドから設定してみ
panelNA.Style.Add(HtmlTextWriterStyle.Display, "none")
ましたが、これもうまくいきません。静的テキストとコントロールは引き続き UI に表示されます。 - パネル内のラジオボタンにフィールドバリデーターが必要なので、パネルが非表示または表示されている場合は、これらのバリデーターをそれぞれ無効および有効にする必要があります。
- 物を保存している間、jQueryで設定されているため、パネルが表示されているかどうかのステータスを確認できません。そのため、サーバー側では利用できず、常に
visible = true
.
コード:
function disablePanelNA() {
var value = 0;
value = parseInt($('#<%=txt1.ClientID %>').val(), 10);
if (value < 1000) {
$('#<%= panel.ClientID %>').hide();
$('#<%= panelNA.ClientID %>').show();
}
else
{
$('#<%= panel.ClientID %>').show();
$('#<%= panelNA.ClientID %>').hide();
}
}
<asp:TextBox ID="txt1" runat="server" onChange="disablePanelNA()" />
<asp:Panel ID="panel" runat="server">
<tr>
<td class="numberColumnNoBold">a.</td>
<td>Do you want to continue?</td>
<td align="right">
<asp:RadioButtonList ID="rbl1" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="Yes" Text="Yes" />
<asp:ListItem Value="No" Text="No" />
</asp:RadioButtonList>
<AjaxRequiredFieldValidator ID="id1" runat="server" ControlToValidate="rbl1"
ErrorMessage="Error occured" />
</td>
</tr>
<tr>
<td class="numberColumnNoBold">b.</td>
<td>Do you want to exit?</td>
<td align="right">
<asp:RadioButtonList ID="rbl2" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="Yes" Text="Yes" />
<asp:ListItem Value="No" Text="No" />
</asp:RadioButtonList>
<AjaxRequiredFieldValidator ID="id2" runat="server" ControlToValidate="rbl2"
ErrorMessage="Error occured again" />
</td>
</tr>
</asp:panel>
<asp:Panel ID="panelNA" runat="server">
<tr>
<td class="numberColumnNoBold">a.</td>
<td>Do you want to continue?</td>
<td align="right">
<td align="right">
<div style="text-align:right;font-weight:bold;padding-right:20px;">N/A</div>
</td>
</td>
</tr>
<tr>
<td class="numberColumnNoBold">b.</td>
<td>Do you want to exit?</td>
<td align="right">
<div style="text-align:right;font-weight:bold;padding-right:20px;">N/A</div>
</td>
</tr>
</asp:panel>