只是我或有其他人注意到asp.net不承认2013年?

时间:2012-12-13 20:26:24

标签: asp.net vb.net html-select

我有一个日期下拉列表,代表我们部门的重要职能。

这些日期年复一年。

以下是日期的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年需要进行一些调整才能被认可,但我不确定是什么。

非常感谢任何想法。

1 个答案:

答案 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