必需的字段验证器不能在代码隐藏中的OnCheckedChanged事件中工作

时间:2013-09-17 08:21:26

标签: c# asp.net code-behind requiredfieldvalidator

我在做一些逻辑上非常简单的事情,但它不起作用。

我在文本框中有一个必填字段验证器。在选择单选按钮时,必须在文本框上放置一些内容。

1)我尝试添加一个必需的字段验证器,它被禁用,然后Onchecked改变了radiobutton的事件,启用了必需的字段验证器。但这不起作用 2)我保持启用所需的字段验证器,并将文本框的文本作为radiobutton的#.Oncheckedchanged事件我清除了文本框的文本,但rValidator仍然无效。 尝试过String.empty并传递值。

我只在服务器端需要这个。在我的头上呆了好几个小时都找不到出路。复制粘贴下面的代码。 任何帮助将不胜感激。

<asp:RadioButton ID="rbNAVEst"  GroupName="NAVEstimate2" runat="server" />
                                    <asp:TextBox ID="tbMonNAVEst" Text="Insert [0-100]" runat="server"></asp:TextBox> &nbsp
                        <asp:DropDownList ID="ddlNavEst2" Width="100px" runat="server">
                            <asp:ListItem> Hours </asp:ListItem>
                            <asp:ListItem> Business Days</asp:ListItem>
                            <asp:ListItem> Calendar Days</asp:ListItem>
                        </asp:DropDownList> <asp:RangeValidator
                                        ID="RangeValidator1" runat="server" Display="Dynamic" Type="Integer" ErrorMessage="Enter Values Between 0 to 100 Only" ControlToValidate="tbMonNAVEst" MaximumValue="100" MinimumValue="0"></asp:RangeValidator>
                        <br />

                          <asp:Label ID="lblBlankNAVEst2" runat="server" Width="60px"></asp:Label>
                            <asp:RadioButton ID="rbOtherNAVEst" AutoPostBack="true"  OnCheckedChanged="ClearNAVEstimate"  GroupName="NAVEstimate2" runat="server" />
                            <asp:Label ID="lblOtherNAV" runat="server" Text="Other"></asp:Label>
                            <asp:TextBox ID="tbOtherNAV" Text="#" runat="server"></asp:TextBox>
                            <asp:RequiredFieldValidator  ID="rfvNAVEStimate" Display="Dynamic" ControlToValidate="tbOtherNAV" Enabled="true" runat="server" ErrorMessage="Please Enter Values" SetFocusOnError="True"></asp:RequiredFieldValidator>
                              <br /> 

代码背后是:

protected void ClearNAVEstimate(Object sender, EventArgs e)
        {
         tbOtherNAV.Text = String.Empty;
        // rfvNAVEStimate.Enabled = true; ( tried this when I had Validators enabled as false.This also did not work)
         tbOtherNAV.Focus();          
         }

2 个答案:

答案 0 :(得分:0)

您检查的radiobutton更改会触发回发,但必需的字段验证程序将在客户端进行验证,这会阻止您。因此,您应该在客户端禁用所需的归档验证器。为该单选按钮编写客户端onCheckedChange事件,然后在该事件中,使用javascript启用或禁用客户端中的requiredfield验证器。 你可以使用以下的javascript功能

ValidatorEnable(getElelementById('#<%=rfvNAVEStimate.ClientID %>') ,fale); // this will disable the validator

如果您通过true。它将启用验证器

答案 1 :(得分:0)

好的伙计...... 如果我使用rfvNAVEstimate.ISvalidate()函数,它会被触发.. 问题解决了......仍然在这里为其他人发布。