我有一个GridView,里面有一个TextField列。我已经为这个TextField列设置了验证,因此它需要一个输入(即它不是可选的),并且输入只能是一个正整数。
当文本字段为空或者没有正整数值时,错误会显示,但是即使GridView中存在错误,仍然会执行服务器端按钮。
如果输入错误,我希望按钮不进行处理。目前这不会发生,因为即使出现错误,仍然会调用按钮的click事件。
GridView标记代码:
<asp:GridView ID="EPSAndTSRValuesInputGridView" runat="server" ShowFooter="true"
AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="EPS Value">
<ItemTemplate>
<asp:TextBox ID="EPSValue" Text='<%# Eval("EPSValue") %>' runat="server" CausesValidation="True" ValidationGroup="Display"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Enter a valid value for EPS!"
ValidationExpression="^\d*$" ControlToValidate="EPSValue" ValidationGroup="Display"/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*"
ControlToValidate="EPSValue" ValidationGroup="Display"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
执行下一步操作的按钮:
<asp:Button ID="btnDisplayReport2"
runat="server" CssClass="ButtonStyle"
Text="Display Report" ValidationGroup="Display" OnClick="btnDisplayReport2_Click" CausesValidation="true"/>
答案 0 :(得分:1)
这种情况正在发生,因为您的按钮具有验证组Display
,因此点击它将仅验证具有相同组的控件,即Display
。我可以看到您的{{1}没有验证组所以它不会在按钮点击中验证它,导致点击按钮的验证在Textbox
,Textbox
和RegularExpressionValidator
中添加相同的验证组。
答案 1 :(得分:0)
我认为这是因为他们没有相同的ValidationGroup。
尝试将ValidationGroup="Display"
添加到验证器中。
答案 2 :(得分:0)
您要在按钮上单击执行验证组显示。如您所述,它将仅验证控件是否具有验证组(显示)。您没有为Textbox验证器定义任何验证组尝试添加相同的验证组(文本框中的 RegularExpressionValidator 和 RequiredFieldValidator 。