Две группы проверки в одной кнопке без события клика клиента

В многосетке я проверяю два элемента управления, такие как дата и сумма. Он правильно проверяется, когда я нажимаю 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" />

Как проверить это в кнопке сохранения, также должны отображаться два всплывающих окна?


person Kajah User    schedule 24.02.2010    source источник


Ответы (2)


Вы можете попробовать запустить функцию проверки для обеих групп вручную с помощью кнопки OnClientClick, поскольку у вас есть две группы проверки, по которым вам нужно выполнить проверку. В настоящее время ваша проверка не срабатывает, потому что вашей кнопке не назначено никаких ValidationGroup, поэтому она просто ищет валидаторы без определенных ValidationGroup (ваши группы: group и req).

Вы можете вызвать 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.

Было бы проще иметь только одну группу проверки для каждого действия (например, вашей кнопки), но я предполагаю, что вам по какой-то причине нужны две группы.

person Kelsey    schedule 24.02.2010
comment
Я пробовал использовать это, но в моей второй группе проверки функция Javascript на ClientValidationFunction из CustomValidator не выполняется или не вызывается - person BritSys; 12.07.2017

Попробуй это..

 <script type="text/javascript">
        function Validate() {
            var isValid = false;
            isValid = Page_ClientValidate('Group1');
            if (isValid) {
                isValid = Page_ClientValidate('Group2');
            } 
            return isValid;
        }
    </script>
person ntroy    schedule 17.07.2014