【问题标题】:GridView TextField validation still allowing next action despite errors尽管出现错误,GridView TextField 验证仍允许执行下一步操作
【发布时间】:2013-07-01 11:16:31
【问题描述】:

我有一个 GridView,其中有一个 TextField 列。我已经为这个 TextField 列设置了验证,因此它需要一个输入(即它不是可选的),并且输入只能是一个正整数。

当文本字段为空或没有正整数值时,错误确实会出现,但有一个服务器端按钮,即使在 GridView 中有错误时仍会执行..

如果有输入错误,我希望按钮不进行处理。目前这不会发生,因为即使出现错误,按钮的点击事件仍会被调用。..

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"/>

【问题讨论】:

    标签: asp.net validation gridview


    【解决方案1】:

    发生这种情况是因为您的 Button 具有验证组 Display,因此单击它只会验证具有相同组的控件,即 Display。我可以看到您的 Textbox 没有验证组,因此它不会验证它在按钮单击中..,在单击按钮时引起验证 在您的TextboxRegularExpressionValidatorRequiredFieldValidator 中添加相同的验证组。

    【讨论】:

    • 我现在已将它们全部添加到同一个 ValidationGroup 中.. 行为仍然没有变化.. 我也更新了上面的主要代码..
    • @Ahmad 我仍然看不到您的文本框的验证组...在您的文本框中添加验证组...使其正常工作...。
    • @Ahmad 没有其他原因你的代码现在不能工作......我试过它对我有用,,
    【解决方案2】:

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

    【讨论】:

    • 如果您还没有尝试在 EPSValue 上添加ValidationGroup="Display"
    • 你的意思是文本域本身?
    【解决方案3】:

    您是说在单击按钮时执行验证组显示。它只会验证具有您提到的验证组(显示)的控件。您没有为文本框验证器定义任何验证组尝试通过添加相同的验证组( displa) 在您的文本框、RegularExpressionValidatorRequiredFieldValidator 中。

    【讨论】:

    • 这是我原始代码中的一个错字,我没有提到两个验证器的ValidationGroup="Display" .. 现在已更正(参见上面的新代码).. 总而言之,我添加了验证器和按钮现在都到同一个验证组,当出现输入错误时,它不会停止按钮的单击事件..
    猜你喜欢
    • 2012-09-14
    • 2014-05-03
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 2014-01-08
    相关资源
    最近更新 更多