Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp:面板显示隐藏不使用Jquery_Jquery_Asp.net - Fatal编程技术网

asp:面板显示隐藏不使用Jquery

asp:面板显示隐藏不使用Jquery,jquery,asp.net,Jquery,Asp.net,我在ASPX页面上有两个面板和一个文本框。两个面板都包含静态文本和单选按钮以及所需的字段验证器。要求如下 每当第一次加载页面时,若文本框的值大于1000,则不应显示第一个面板,而应显示第二个面板。 如果值小于1000,则应显示第一个面板,而不应显示第二个面板。 现在,问题是: 文本框值可以由用户更改,因此取决于输入的值,使用jQuery我需要显示相应的面板。我不想为每个静态文本设置标签,然后为所有标签和单选按钮逐个设置相同的属性;这就是为什么我使用了一种新的方法 我不能从代码隐藏中将visibl

我在ASPX页面上有两个面板和一个文本框。两个面板都包含静态文本和单选按钮以及所需的字段验证器。要求如下

每当第一次加载页面时,若文本框的值大于1000,则不应显示第一个面板,而应显示第二个面板。 如果值小于1000,则应显示第一个面板,而不应显示第二个面板。 现在,问题是:

文本框值可以由用户更改,因此取决于输入的值,使用jQuery我需要显示相应的面板。我不想为每个静态文本设置标签,然后为所有标签和单选按钮逐个设置相同的属性;这就是为什么我使用了一种新的方法

我不能从代码隐藏中将visible属性设置为false,因为这样该面板将不会在ASPX页面上呈现,并且显示、隐藏将不起作用。 我尝试设置panelNA.Style.AddHtmlTextWriterStyle.Display,没有代码隐藏,但这也不起作用。因为静态文本和控件在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>

在代码隐藏中,请使用此

pnl.Style.Add("display", "none");
要从javascript禁用验证程序,请使用以下命令

ValidatorEnable(document.getElementById('<%= reqfile.ClientID %>'), false);
ValidatorEnable(document.getElementById('<%= reqfile.ClientID %>'), true);
为了显示隐藏div,您不需要知道div的可见状态,因为根据您提到的逻辑,div将根据文本框的值隐藏或显示


另外,请在粘贴之前格式化代码。

如果在.aspx标记/code-behind中设置Visible=false,ASP.Net控件将不会在页面中呈现

最好在面板中删除Visible=false集,并添加样式display:none

如果您想在代码隐藏中实现,请遵循以下代码

pnlUpdateDisplay.Style.Add(HtmlTextWriterStyle.Display,"none");
然后使用

$('#<%=pnlUpdateDisplay.ClientID %>').toggle()

尝试格式化您的代码,但似乎需要很长时间:我已经尝试过pnl.Style.Adddisplay,没有;来自代码隐藏,但它不起作用。面板内的控件仍在显示中。同时显示隐藏面板不起作用。此外,我还尝试使用上述代码禁用重新启用的文件验证程序,但问题是,每当使用此代码时面板变为可见时,这些验证程序就会被触发并显示错误消息,这是不正确的;它确实有效。嗯,我不确定我错在哪里。我用另一个asp:panel尝试了同样的方法,比如:asp:panel ID=panelTest EnableViewState=true Runat=server>Hello World。它可以做到这一点,并且确实隐藏了文本Hello world,但是当我放入更多的tr和td,然后插入更多的控件(如上面代码中提到的单选按钮)时,这些控件仍然会显示出来。在pannelDoes中尝试使用基于div的结构,而不是基于表的结构,这才是真正重要的?在一天结束时,我们只隐藏面板。这些东西得到不同的对待吗?