GridView TextField验证仍然允许下一步操作,尽管有错误

时间:2013-07-01 11:16:31

标签: asp.net validation gridview

我有一个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"/>

3 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您的按钮具有验证组Display,因此点击它将仅验证具有相同组的控件,即Display。我可以看到您的{{1}没有验证组所以它不会在按钮点击中验证它,导致点击按钮的验证在TextboxTextboxRegularExpressionValidator中添加相同的验证组。

答案 1 :(得分:0)

我认为这是因为他们没有相同的ValidationGroup。 尝试将ValidationGroup="Display"添加到验证器中。

答案 2 :(得分:0)

您要在按钮上单击执行验证组显示。如您所述,它将仅验证控件是否具有验证组(显示)。您没有为Textbox验证器定义任何验证组尝试添加相同的验证组(文本框中的 RegularExpressionValidator RequiredFieldValidator