2016-12-06 62 views
2

我有两个DropDownLists填充Year-Dates,并且我想在第二个ddls值小于第一个ddls值的情况下显示错误消息。如何使用比较验证器比较两个下拉列表值之间的数据?

这是迄今为止我已经使用的代码,它不工作:

<asp:CompareValidator 
     ID="cvEndYear2" Operator="GreaterThan" runat="server" CssClass="text-danger" 
     ValidationGroup="Save" ControlToValidate="ddlEndYear" Display="Dynamic" 
     ValueToCompare="ddlStartYear" ErrorMessage="Greater Than" SetFocusOnError="true"> 
    </asp:CompareValidator> 
+0

看看:http://stackoverflow.com/questions/9372901/asp-net-compare-validator-to-validate-date –

+0

如果它不起作用,它是什么呢? –

回答

2

您必须指定ControlToCompareOperator

<asp:CompareValidator 
    ID="cvEndYear2" Operator="GreaterThan" runat="server" CssClass="text-danger" 
    ValidationGroup="Save" 
    ControlToValidate="ddlEndYear" Display="Dynamic" 
    ControlToCompare="ddlStartYear" 
    Operator="GreaterThanEqual" 
    Type="Integer" 
    ErrorMessage="The end year must be greater/equal the start year" SetFocusOnError="true"> 
</asp:CompareValidator> 
+1

要么使用“ControlToCompare”或“ValueToCompare”,而不是在同一时间 –

+1

@EhsanSajjad:谢谢。但是,msdn [提及](https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.comparevalidator.controltocompare(v = vs.110).aspx):“如果两个属性被设置,ControlToCompare属性优先“。由于OP想要比较两个控件,他必须使用ControlToCompare。那是对的吗? –

+0

这解决了我的问题,谢谢! – Null

2

您还没有指定的类型,指定将在文本框的数据类型:

<asp:CompareValidator 
     .......... 
     .......... 
     ControlToValidate="ddlStartYear" 
     ControlToCompare="ddlEndYear" 
     Operator="GreaterThanEqual" 
     Type="Integer"> 
    </asp:CompareValidator> 

你可能想看看at this tutorial

+0

我已经尝试整数和字符串类型,也不工作 – Null

+0

['ValueToCompare'](https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.comparevalidator.valuetocompare(v = vs.110).aspx)与一个常数值进行比较,OP想要与另一个下拉列表的值进行比较。 –

+0

你是对的@TimSchmelter,纠正它 –