我有一个日期下拉列表,代表我们部门的重要职能。
这些日期年复一年。
以下是日期的dropdownList:
<asp:DropDownList id="txtdte" runat="server">
<asp:ListItem Value="07/31/2012">Jul 31, 2012</asp:ListItem>
<asp:ListItem Value="08/21/2012">Aug 21, 2012</asp:ListItem>
<asp:ListItem Value="09/18/2012">Sep 18, 2012</asp:ListItem>
<asp:ListItem Value="11/06/2012">Nov 06, 2012</asp:ListItem>
<asp:ListItem Value="12/04/2012">Dec 04, 2012</asp:ListItem>
</asp:DropDownList>
为确保在下拉列表框顶部显示正确的日期,我们提供以下代码:
For Each items As ListItem In txtdte.Items
If (items.Value.CompareTo(DateTime.Today.ToString("MM/dd/yyyy"))) < 0 Then
items.Enabled = False
End If
Next
这意味着我们从7月31日开始。一旦7月31日消失,下一个可用日期将成为当前日期。
直到现在,管理层决定将1月的日期添加到2013年8月1日,这对我们来说非常有用。
<asp:ListItem Value="01/08/2013">Jan 08, 2013</asp:ListItem>
现在,dropdownlistbox为空白。
在我看来,2013年需要进行一些调整才能被认可,但我不确定是什么。
非常感谢任何想法。
答案 0 :(得分:5)
我猜这是在执行字符串比较,其中“01/08/2013”作为字符串比较小于“12/13/2012”(“0”按字母顺序早于“1”)
尝试更改代码以将字符串中的值转换为日期并比较DateTime
个对象而不是字符串表示形式:
For Each items As ListItem In txtdte.Items
If (DateTime.Parse(items.Value).CompareTo(DateTime.Today)) < 0 Then
items.Enabled = False
End If
Next