在多重网格中,我正在验证两个控件,例如日期和金额。当我按下 tabevent 时,它正在正确验证。当我按下保存按钮时,它没有验证。我正在使用两个验证组和两个验证摘要。然后在保存按钮中,我还尝试了使用 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" />
如何在按钮保存中验证这一点并应显示两个弹出框?
最佳答案
您可能想尝试通过按钮的 OnClientClick
手动触发两个组的验证函数,因为您需要针对两个验证组进行验证。目前,您的验证未触发,因为您没有为按钮分配任何 ValidationGroup
,因此它只是寻找未定义 ValidationGroup
的验证器(您的组是:group 和 req )。
您可以通过 javascript 调用 Page_ClientValidate()
来手动触发验证检查(请务必将按钮上的 CauseValidation
设置为 false),并且它有一个可选参数这需要验证组。
<asp:Button ID="yourButton" runat="server" OnClick="ButtonSave_Click"
CausesValidation="false" TabIndex="6"
OnClientClick="return (Page_ClientValidate('group') && Page_ClientValidate('req'));" />
您可以在 MSDN 上阅读有关 Page_ClientValidate
的更多信息。 .
为每个操作(例如您的按钮)设置一个验证组会更容易,但我认为出于某种原因您需要两个组。
关于asp.net - 单个按钮中的两个验证组,无需客户端单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2324744/