1

ASPX ページに 2 つのパネルとテキスト ボックスがあります。両方のパネルには、必須のフィールド バリデータと共に、静的テキストとラジオ ボタンが含まれています。要件は次のとおりです。

  1. ページが最初に読み込まれるときはいつでも、テキスト ボックスの値が 1000 より大きい場合、最初のパネルが表示されず、2 番目のパネルが表示されます。
  2. 値が 1000 未満の場合、最初のパネルは表示され、2 番目のパネルは表示されません。

さて、問題は次のとおりです。

テキスト ボックスの値はユーザーが変更できるため、入力した値に応じて、jQuery を使用して適切なパネルを表示する必要があります。各静的テキストにラベルを付けてから、すべてのラベルとラジオ ボタンに同じプロパティを 1 つずつ設定したくありません。それが私が使用した理由です<asp:Panel>

  1. このパネルが ASPX ページにレンダリングされず、表示、非表示が機能しないため、コード ビハインドから visible プロパティを false に設定することはできません。
  2. コードビハインドから設定してみpanelNA.Style.Add(HtmlTextWriterStyle.Display, "none")ましたが、これもうまくいきません。静的テキストとコントロールは引き続き UI に表示されます。
  3. パネル内のラジオボタンにフィールドバリデーターが必要なので、パネルが非表示または表示されている場合は、これらのバリデーターをそれぞれ無効および有効にする必要があります。
  4. 物を保存している間、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>
4

2 に答える 2

0

コードビハインドでこれを使用します

pnl.Style.Add("display", "none");

JavaScript からバリデーターを無効にするには、これを使用します

ValidatorEnable(document.getElementById('<%= reqfile.ClientID %>'), false);
ValidatorEnable(document.getElementById('<%= reqfile.ClientID %>'), true);

divを非表示にするために、テキストボックスの値に基づいてdivが非表示または表示されると述べたロジックに従って、divの表示ステータスを知る必要はありません。

また、貼り付ける前にコードをフォーマットしてください。

于 2012-09-04T09:48:55.333 に答える