2

在多重网格中,我正在验证日期和金额等两个控件。当我按下 tabevent 时,它正在正确验证。当我按下保存按钮时,它没有验证。我正在使用两个验证组和两个验证摘要。然后在保存按钮中,我还尝试onclientclick()了使用 javascript 的函数,它工作正常,但如果我在日期和金额记录中给出正确的值,它不会保存。如何克服这个。

日期

 <asp:TemplateField HeaderText="Date">
                                                        <ItemTemplate>
                                                            <asp:TextBox ID="txtDate" Text='<%# Bind("AD_REF_DATE") %>' runat="server" CausesValidation="true"
                                                                ValidationGroup="group" Width="80px" AutoPostBack="true" OnTextChanged="txtDate_TextChanged"></asp:TextBox>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField>
                                                        <ItemTemplate>
                                                            <asp:CompareValidator ID="dateValidater" runat="server" ControlToValidate="txtDate"
                                                                Operator="DataTypeCheck" Type="Date" ValidationGroup="group" EnableClientScript="true"
                                                                ErrorMessage="Please enter a valid date (mm/dd/yyyy)." SetFocusOnError="true" Display="None">*</asp:CompareValidator>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>

数量

<asp:TemplateField HeaderText="Amount">
                                                        <ItemTemplate>
                                                            <asp:TextBox ID="txtAmount" MaxLength="17" Text='<%# Bind("AD_AMOUNT") %>' CausesValidation="true"
                                                                ValidationGroup="req" runat="server" AutoPostBack="true">
                                                            </asp:TextBox>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                    <asp:TemplateField>
                                                        <ItemTemplate>
                                                            <asp:RegularExpressionValidator ID="regVal1" runat="server" ControlToValidate="txtAmount"
                                                                ErrorMessage="Format(13int,5deci)" ValidationExpression="^[1-9]\d{0,12}(\.\d{1,2})?%?$"
                                                                ValidationGroup="req" Display="None"  EnableClientScript="true" SetFocusOnError="true">
                                                            </asp:RegularExpressionValidator>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>

验证摘要:

 <asp:ValidationSummary ID="ValidationSummary3" runat="server" ValidationGroup="req"
                            HeaderText="Amount:Invalid Format" DisplayMode="BulletList" ShowMessageBox="true"
                            ShowSummary="false" />
                        <asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="group"
                            HeaderText="Date:Invalid Format" DisplayMode="BulletList"  ShowMessageBox="true" 
                            ShowSummary="false" />

按钮保存:

 <asp:Button ID="ButtonSave" runat="server"  CssClass="button" CausesValidation="true" Text="<%$Resources:TJFAS501, ButtonSave %>"
                                            OnClick="ButtonSave_Click" TabIndex="6" />

如何在按钮保存中验证这一点,还应该显示两个弹出框?

4

2 回答 2

3

您可能想尝试通过按钮手动触发两个组的验证功能,OnClientClick因为您有两个需要验证的验证组。目前您的验证没有触发,因为您没有ValidationGroup为您的按钮分配任何内容,因此它只是在寻找没有ValidationGroup定义的验证器(您的组是:组和请求)。

您可以Page_ClientValidate()通过 javascript 调用以手动触发验证检查(确保将CauseValidation您的按钮设置为 false),并且它具有一个可选参数,该参数采用验证组。

<asp:Button ID="yourButton" runat="server" OnClick="ButtonSave_Click"
    CausesValidation="false" TabIndex="6"
    OnClientClick="return (Page_ClientValidate('group') && Page_ClientValidate('req'));" />

Page_ClientValidate您可以在MSDN上阅读更多信息。

为每个操作(例如您的按钮)设置一个验证组会更容易,但我假设您出于某种原因需要两个组。

于 2010-02-24T21:21:42.887 回答
0

试试这个..

 <script type="text/javascript">
        function Validate() {
            var isValid = false;
            isValid = Page_ClientValidate('Group1');
            if (isValid) {
                isValid = Page_ClientValidate('Group2');
            } 
            return isValid;
        }
    </script>
于 2014-07-17T14:02:55.677 回答