2014-07-22 22 views
1

我在页面中有三个过滤器。两个文本框用于日期(从和到)和一个特定值的下拉列表。 那么我有几个验证日期过滤器,他们都按预期工作。问题是,即使验证未得到满足,我仍然可以更改下拉列表中的选定项目,该项目的AutoPostBack属性设置为true。如何仅在页面中的所有验证都满足时触发DropDownList AutoPostBack

下面是我用来验证我的页面的代码。如您所见,我已经使用验证组。

 <table align="center"> 
      <tr> 
       <td> 
        FROM 
       </td> 
       <td> 
        <asp:TextBox ID="txtFromDate" runat="server" Width="80px" Style="text-align: center"></asp:TextBox> 
        <Toolkit:CalendarExtender ID="ceFechaInicial" runat="server" Format="dd/MM/yyyy" 
         PopupButtonID="ImgFechaInicial" TargetControlID="txtFromDate" />       
        <Toolkit:MaskedEditExtender ID="meeFecha" runat="server" AcceptNegative="Left" DisplayMoney="Left" 
         ErrorTooltipEnabled="false" Mask="99/99/9999" MaskType="Date" MessageValidatorTip="false" 
         UserDateFormat="DayMonthYear" OnFocusCssClass="MaskedEditFocus" OnInvalidCssClass="MaskedEditError" 
         TargetControlID="txtFromDate" ClearMaskOnLostFocus="true" /> 
        <Toolkit:MaskedEditValidator ID="mevFecha" runat="server" ControlExtender="meeFecha" 
         ControlToValidate="txtFromDate" Display="None" EmptyValueBlurredText="" EmptyValueMessage="" 
         ErrorMessage="Fecha no es válida" InvalidValueBlurredMessage="*" InvalidValueMessage="La fecha no es válida" 
         SetFocusOnError="true" TooltipMessage="" ValidationGroup="findGroup" IsValidEmpty="true" /> 
        <Toolkit:ValidatorCalloutExtender ID="ValidatorCalloutExtender5" runat="Server" CssClass="customCalloutStyle" 
         HighlightCssClass="validatorCalloutHighlight" TargetControlID="mevFecha" WarningIconImageUrl="~/images/msjeAdvertencia.png" /> 
        <asp:CompareValidator ID="CompareValidator3" runat="server" ControlToCompare="txtFromDate" 
         ControlToValidate="txtToDate" Display="None" ErrorMessage="Fecha final no debe ser menor que la inicial" 
         Operator="GreaterThanEqual" SetFocusOnError="false" Type="Date" ValidationGroup="findGroup"></asp:CompareValidator> 
        <Toolkit:ValidatorCalloutExtender ID="ValidatorCalloutExtender2" runat="Server" CssClass="customCalloutStyle" 
         HighlightCssClass="validatorCalloutHighlight" TargetControlID="CompareValidator3" 
         WarningIconImageUrl="~/images/msjeAdvertencia.png" />       
       </td> 
       <td> 
        TO 
       </td> 
       <td> 
        <asp:TextBox ID="txtToDate" runat="server" Width="80px" Style="text-align: center"></asp:TextBox> 
        <Toolkit:CalendarExtender ID="ceFechaFinal" runat="server" Format="dd/MM/yyyy" PopupButtonID="ImgFechaFinal" 
         TargetControlID="txtToDate" />        
        <Toolkit:MaskedEditExtender ID="txtToDate_MaskedEditExtender" runat="server" 
         AcceptNegative="Left" DisplayMoney="Left" ErrorTooltipEnabled="false" Mask="99/99/9999" 
         MaskType="Date" MessageValidatorTip="false" UserDateFormat="DayMonthYear" OnFocusCssClass="MaskedEditFocus" 
         OnInvalidCssClass="MaskedEditError" TargetControlID="txtToDate" ClearMaskOnLostFocus="true" /> 
        <Toolkit:MaskedEditValidator ID="mevFecha0" runat="server" ControlExtender="meeFecha" 
         ControlToValidate="txtToDate" Display="None" EmptyValueBlurredText="" EmptyValueMessage="" 
         ErrorMessage="Fecha no es válida" InvalidValueBlurredMessage="" InvalidValueMessage="La fecha no es válida" 
         SetFocusOnError="true" TooltipMessage="" ValidationGroup="findGroup" IsValidEmpty="true" /> 
        <Toolkit:ValidatorCalloutExtender ID="ValidatorCalloutExtender4" runat="Server" CssClass="customCalloutStyle" 
         HighlightCssClass="validatorCalloutHighlight" TargetControlID="mevFecha0" WarningIconImageUrl="~/images/msjeAdvertencia.png" /> 
        <asp:CompareValidator ID="CompareValidator4" runat="server" ControlToCompare="txtToDate" 
         ControlToValidate="txtFromDate" Display="None" ErrorMessage="Fecha final debe ser mayor que la inicial" 
         Operator="LessThanEqual" SetFocusOnError="false" Type="Date" ValidationGroup="findGroup"></asp:CompareValidator> 
        <Toolkit:ValidatorCalloutExtender ID="ValidatorCalloutExtender3" runat="Server" CssClass="customCalloutStyle" 
         HighlightCssClass="validatorCalloutHighlight" TargetControlID="CompareValidator4" 
         WarningIconImageUrl="~/images/msjeAdvertencia.png" /> 
        <asp:CustomValidator ID="StartDateValidator" runat="server" ClientValidationFunction="InitValidators" 
         Display="Dynamic" ErrorMessage="" OnServerValidate="StartDateValidator_Validate" 
         ValidationGroup="findGroup"></asp:CustomValidator>        
       </td> 
       <td> 
        &nbsp; 
       </td> 
       <td> 
        <asp:DropDownList ID="ddlModels" runat="server" AppendDataBoundItems="True" 
         AutoPostBack="True" OnSelectedIndexChanged="ddlModels_SelectedIndexChanged"> 
         <asp:ListItem Value="0">Select</asp:ListItem> 
        </asp:DropDownList> 
        <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="ddlModels" 
         Display="None" ErrorMessage="Select a model" Operator="NotEqual" ValidationGroup="findGroup" 
         ValueToCompare="0"></asp:CompareValidator> 
        <Toolkit:ValidatorCalloutExtender ID="ValidatorCalloutExtender9" runat="Server" CssClass="customCalloutStyle" 
         HighlightCssClass="validatorCalloutHighlight" TargetControlID="CompareValidator1" 
         WarningIconImageUrl="~/images/msjeAdvertencia.png" /> 
       </td> 
       <td> 
        &nbsp; 
       </td>      
       <td> 
        <asp:Button ID="btnFind" runat="server" CssClass="button small blue" OnClick="btnFind_Click" 
         Text="Buscar" ValidationGroup="findGroup" Width="64px" /> 
       </td>       
      </tr> 
     </table> 

有没有什么办法可以在页面中的所有验证都满足时仅触发由dropdownlist AutoPostBack引起的回发?

回答

2

添加的CausesValidation =“真”

<asp:DropDownList ID="ddlModels" runat="server" AppendDataBoundItems="True" AutoPostBack="True" OnSelectedIndexChanged="ddlModels_SelectedIndexChanged" 
ValidationGroup="findGroup" CausesValidation="true"> 
    <asp:ListItem Value="0">Select</asp:ListItem> 
</asp:DropDownList> 
+0

这是它!太感谢了! – eddy

+0

欢迎您:) – Simua

0

您可以将DropDownList添加到ValidationGroup。

<asp:DropDownList ID="ddlModels" runat="server" AppendDataBoundItems="True" AutoPostBack="True" OnSelectedIndexChanged="ddlModels_SelectedIndexChanged" 
ValidationGroup="findGroup"> 
    <asp:ListItem Value="0">Select</asp:ListItem> 
</asp:DropDownList> 
+0

我已经尝试过,但没有工作:( – eddy

相关问题