2

マルチグリッドでは、日付と金額のような 2 つのコントロールを検証しています。tabevent を押すと正しく検証されます。保存ボタンを押しても検証されません。2 つの検証グループと 2 つの検証サマリーを使用しています。次に、保存ボタンでJavaScriptを使用して機能を試しましonclientclick()たが、正常に機能していますが、日付と金額のレコードに正しい値を指定すると、保存されません。これを乗り越える方法。

日にち

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

ボタンでこれを検証するには、2 つのポップアップ ボックスも表示する必要がありますか?

4

2 に答える 2

3

OnClientClick検証する必要がある検証グループが 2 つあるため、ボタンを使用して手動で両方のグループの検証機能を起動してみることをお勧めします。現在、ボタンに何も割り当てられていないため、検証は実行されていません。そのため、定義され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を参照してください。

アクションごとに 1 つの検証グループ (ボタンなど) を設定する方が簡単ですが、何らかの理由で 2 つのグループが必要になると思います。

于 2010-02-24T21:21:42.887 に答える